搜尋

搜尋結果

Spring boot 10 - openapi 生成器 - spring boot java client
科技新知
MacauYeah・2025-08-19

之前我們在介紹Spring Boot Web 調試工具 ,就試安裝 openapi 相關的元件。其實 openapi 並不單是為了提供 swagger 測試介面,它主要是提供一個描述的方式,讓我們針對一個特定 openapi 文件,生成對應的 api server 或 api client 接口。也就是,如果 server 方有提供該文件,道理上可以經 openapi 的工具,生成一個可以直接訪問 server 的 client library。本節,可以沿用之前的 spring boot web api doc ,為它產生一個client library 作為實驗。 在生成 client library 之前,我們還需要一個工具 openapigeneratorcli 。最簡單的取得方式,就是經過 npm , 在你需要生成 client library 的專案中,安裝你需要的 openapigeneratorcli 版本。 npm install @openapitoolsopenapigeneratorcli 那怕你不是使用 nodejs 作為開發,也可以經過這個方法安裝。它只提供使用 cmd 指令的捷徑。 生成 Java Client Library 我們先把 backend server 起好 cd somewhere amp;amp; mvn springbootrun,然後使用 openapigeneratorcli 去生成以 java spring boot 3 為底的 client library 。 npx openapigeneratorcli generate i httplocalhost8080v3apidocs apipackage io.github.macauyeah.springboot.tutorial.openapiclient.api modelpackage io.github.macauyeah.springboot.tutorial.openapiclient.model invokerpackage io.github.macauyeah.springboot.tutorial.openapiclient.invoker groupid io.github.macauyeah.springboot.tutorial artifactid springbootwebapiopenapiclient artifactversion 0.0.1SNAPSHOT g java p useJakartaEe=true p useSpringBoot3=true library webclient o springbootwebapiopenapiclient 生成的 source code 就像是 springbootwebapiopenapiclient ,具體的使用方式,可以看看測試用例 ApiControllerApiTest.java private final ApiControllerApi api = new ApiControllerApi; @Test public void postDateQueryTest default call ApiDateRequest apiDateRequest = new ApiDateRequest; apiDateRequest.setInputDateOffsetDateTime.now; LOG.debugquot;default web client postDateQueryquot;, api.postDateQueryapiDateRequest.block; replace webClient in ApiClient if you have special auth config on webClient, you can also change basePath during new obj creation ObjectMapper mapper = new ObjectMapper; mapper.setDateFormatnew SimpleDateFormat; mapper.registerModulenew JavaTimeModule; WebClient webClient = WebClient.builder .codecsconfigurer gt; configurer.defaultCodecs.jackson2JsonDecodernew Jackson2JsonDecodermapper; configurer.defaultCodecs.jackson2JsonEncodernew Jackson2JsonEncodermapper; .build; ApiControllerApi api2 = new ApiControllerApi new ApiClientwebClient .setBasePathquot;httplocalhost8080quot;; LOG.debugquot;create api2 by local web client postDateQueryquot;, api2.postDateQueryapiDateRequest.block; use webClient directly String response = webClient.post.uriquot;httplocalhost8080apirecordquot;.bodyValueapiDateRequest.retrieve .bodyToMonoString.class.block; LOG.debugquot;request by local web client postDateQueryquot;, response; 上述例子中,如果大家沒有任何特殊要求,其實經過 api.postDateQueryapiDateRequest.block 就完成了。有需要改 api endpoint 的,只要生成新的 ApiClient 並設定 basePath new ApiClient.setBasePathquot;XXXXXXquot; 就好。真的要加入更多權限設定,就需要生成新的 ApiClient 並設定 webClient new ApiClientwebClient 這個生成的 Java Client Library 道理上還是要經過 maven 等打包,變成 jar 檔,才能被其他 Java 專案所引用。筆者就建議大家直接把成生的視為獨立的 module sub module 存放,其他專案就以 maven dependency 的方式引用。想要混合現有專案,動態生成專案內某些 java package,暫時不太可行。因為它也有大量的 dependency ,交由 openapigeneratorcli 自己管理會比較好,它們升級時,你也可以完整升級。 openapigeneratorcli httpsgithub.comOpenAPIToolsopenapigeneratorcli springbootwebapiopenapiclient

澳門斷捨離學會「愛・生命」讀書會6月活動圓滿落幕
文化創意
陳康妮・2025-07-03

2025年7月3日 市民日報 澳門斷捨離學會「愛・生命」讀書會6月活動 圓滿落幕 澳門斷捨離學會於6月成功舉辦「愛・生命」主題讀書會,吸引眾多書友參與,活動氣氛熱烈,內容充實,展現了閱讀與生命的深刻連結。活動由澳門知名教育家陳康妮主持,以愛. 生命為切入點,帶領參加者深入探討生命教育的意義及生死教育的價值,激發大家對人生價值的思考。陳康妮以其豐富的教育經驗,分享如何透過繪本故事向年輕一代傳遞澳門的文化與價值,強調「說好澳門故事」的重要性,引導參與者以閱讀滋養心靈,傳承本土文化。 活動亮點之一為澳門文藝家李嘉麗的參與,她特別為本次讀書會設計了一系列獨具匠心的環保信封,融入澳門文化元素,展現簡約與創意的結合。這些信封不僅實用,更傳達了斷捨離的理念mdash;mdash;摒棄多餘、珍惜當下,讓生活回歸本真。李嘉麗表示,設計靈感源自澳門的歷史與自然景觀,希望透過藝術創作,讓參與者感受到「愛・生命」的溫暖與力量。 本次活動不僅是一場心靈的洗滌,更是一次文化與教育的交融。參與者紛紛表示,透過陳康妮的分享與李嘉麗的創意設計,他們對生命教育有了更深的體悟,並對澳門的文化傳承充滿期待。澳門斷捨離學會表示,未來將繼續舉辦多元化的讀書會活動,結合文學、藝術與教育,推動澳門閱讀文化的發展,為社區注入更多正能量。

【沙巴神山】京那峇魯山2018攻頂紀錄
走遍世界
背包旅神・2018-10-23

因為身形瘦弱矮小,加上常生病、腸胃不好,又容易食物中毒,所以我總是説,我的身體配不上我熱血的靈魂,但這一次我的身體比我的靈魂還熱血。 記得在出發的幾天前,發燒、感冒、喉嚨痛,各種病菌來襲,吃了各種藥也無法制止身體的不適。曾想過放棄這一趟旅程,即使那是半年前就預定好的行程,卻因為拖延症加上工作滿檔,所以連事前鍛煉體力的準備都沒有。出發前生病,要爬上神山自己都覺得根本不可能,但好不容易在半年前搶到神山登山位子,機票也買好了,只好帶著勉強的身體飛到沙巴。到達那天極不舒服,住進一間冷氣開得很強的青旅,整夜睡不好。隔天早上的想法是既然到了,那就賭一賭,原訂只想爬到半山,給自己一個交代,結果幾天沒睡的身體在爬山時腎上腺素飆高,一步一步往上爬,也許走得比別人慢,但每走一步都算數。 用最慢的腳步感受神山的氣息,不去想登頂的事,我開始學會享受過程。在登頂那一刻我其實沒什麼感覺,我以為我會很感動,但其實因為爬得比較慢,登頂後來不及感動,就要下山了。但直到結束的那一刻,在鏡頭紀錄説了拜以後,整個人都快暈了。可以撐完整個過程自己也覺得很強,雖然很勵志,但還是要提醒大家這個絕對是個不良示範,有病趕快下山,因為高山生病真的很危險。這一趟登山身體雖然逞強,但因為學會放慢腳步;放低目標;放下攻頂的壓力,反而讓我在爬山的路上更順利。

長榮航空飛布里斯班來回連稅MOP4,395起!
激安優惠
OHChance 旅遊誌・2018-07-10

長榮航空推出澳門出發經台北飛澳洲布里斯班的優惠,可以澳門出發飛澳洲4000鬆d 真係ok,轉機時間也不錯,而且今次優惠回程仲可以中停台灣(會因為要俾台灣機場稅所以貴130蚊左右)。 優惠期從10月中到19年3月,如果想9月出發會貴300、回歸聖誕前後有些貴600的票,農曆新年前後就有些貴800的票。 《優惠價錢(來回連稅)》*布里斯班:MOP4,395 如回程中停台北,優惠價為 MOP4,528。 以上航點均需經台北轉機。  《出發日期及最長停留》.出發日期:10月17日至2019年3月27日.最長停留:1個月  《購票日期及方法》.購票日期:至少出發60天前購票.購票日期:至長榮航空官網.預訂網址:httpswww.evaair.comzhhkindex.html  【輔助訊息】.長榮航空澳洲線票價已包30KG托運行李額。.澳洲簽證申請經驗:httpohnote.ohchance.infoaustraliavisa  附註:上述最低價錢為航空公司公告之最優惠價格,或本站能找到的最低價格;每一航班有否優惠票價及所存票量由航空公司決定,優惠票量有限售完即止。  價錢 Sample ndash; 澳門經台北飛布里斯班來回連稅MOP4,395 ===== 想搵平機票去玩,即上 OH!Chance!澳燦旅行資訊 httpohchance.info 去日本旅行買咩 JR Pass好?唔知間航空公司好唔好坐?即上 OH!Note!小燦的旅行筆記做功課 httpohnote.ohchance.info 睇埋 Facebook 專頁 httpsfb.comohchance 第一時間獲得最新旅遊資訊!

那一在曼谷不花交通費的旅程
走遍世界
背包旅神・2018-06-10

曼谷這個城市對我來說並不陌生,但之前到訪都是和家人朋友的旅行。而去年我一個人到曼谷的背包客體驗,讓我對曼谷這城市有了另一番的體會。 我選擇住在曼谷背包客聚集地的考山路上,考山路住宿費便宜,但附近並無地鐵站,因此出行稍微有些不便。卻因為這機緣巧合,讓我發現了一個更妙的出行方式mdash;mdash;搭公車,而且還是無空調的免費公車,因為這樣,讓我在曼谷幾乎沒花到任何交通費,非常不可思議。 曼谷的免費公車主要是政府提供給當地民眾的免費交通,外表紅黃色,且並無空調冷氣,很容易辨認。 記得第一次搭的時候還稍微有些緊張,因為搭公車的都是當地人不太會說英文,因此上車時我問了司機是不是到我想到的目的地。女司機示意要我坐下,我也找了個位子坐下了,但公車開不到兩分鐘就停下,女司機就把我叫住,然後說了一連串我聽不懂的泰語,比手畫腳要我下車,我問她這邊是我要去的目的地嗎?她又說了一連串泰文要我下車,我有點無奈,因為我知道我要到的地方顯然不是那麼靠近。這時候,車上有個好心女生走過來用有限的英文跟我翻譯,聽了很久,溝通了一下才知道原來我上錯車了,司機要我在這下車,走到對面的路口搭正確的公車,這才發現司機真好心呀!下車前向司機和女乘客道謝,然後才往正確的方向走去。 搭乘這紅色巴士是個很棒的體驗,除了免費以外,還可以和當地人坐在一塊。拿著扇子散熱的婦女;聽著耳機的學生;對窗外發呆的大叔;喝著冷飲的年輕人,大家一起困在塞車的市區里,不緊張時間流逝,慢慢欣賞窗外的風景和走在路上的人們,這曼谷和之前我來過的曼谷完全是不同的風景。再加上,巴士並沒有報站,必須先跟司機打招呼提醒要到的地方,然後手機的gps也要隨時注意是否到站,每次搭乘成功到站都是一種成就感。 現在不知道曼谷還有沒有這巴士,那個別人習以為常的巴士,每次搭上都是一趟神奇的旅程。