在Vue中使用 openapi-generator-cli generate 自動產生 typescript-axios API文件

gray laptop computer
Photo by Monoar Rahman on Pexels.com

為什麼要用 openapi-generator-cli ?

openapi-generator-cli是一個強大的工具,用於自動生成API客戶端庫、服務器存根和API文件。

簡單說,現在開發API的時候大部分都遵守OpenApi的規範,OpenAPI的採用率和生態系統支持使其成為當前最主要的選擇之一。

當後端開發好API時,可能會提供與OpenAPI相容的API文件,最常見的是 Swagger,用來展示這些文件,可是前端看到這些文件的時候,並不能馬上使用,必須先將文件轉成前端可以用的檔案,例如 .ts 或者 .js 讓前端的框架可以認識並使用API。

除了手動產生之外,最快的方法應該是自動產生,大幅縮短產生API檔案的時間。

安裝 openapi-generator-cli

在安裝 openapi-generator-cli 之前,需要安裝 Java 環境,如果不想安裝Java環境,可以使用 Docker 模式使用。

推薦安裝 Java 環境為 Temurin 的 OpenJDK,安裝後開啟一個新的終端機輸入

java -version

正常的話會看到這樣的畫面,表示正確安裝OpenJDK

接著在終端機畫面中輸入

npm install -g @openapitools/openapi-generator-cli

或是

yarn global add @openapitools/openapi-generator-cli

安裝完成後,進到前端的主目錄底下,輸入

openapi-generator-cli

會產生一個 openapitools.json 的檔案,這是openapi-generator-cli的設定檔,他的結構如下

{
  "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "7.7.0"    
  }
}

設定openapi-generator-cli的Config檔: openapitools.json

先上一個範例程式,我們再解說其中的關鍵地方“。

{
  "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "7.7.0",
    "generators": {
      "v1.0": {
        "generatorName": "typescript-axios",
        "output": "./src/api-services",
        "skipValidateSpec": true,
        "inputSpec": "http://localhost:5501/swagger/Default/swagger.json",
        "additionalProperties": {
          "apiPackage": "apis",
          "modelPackage": "models",
          "withSeparateModelsAndApi": true
        }
      }
    }
  }
}

這個範例程式表示要以 typescript-axios 作為輸出結果,並把結果放到 ./src/api-services 目錄底下,使用的來源是 http://localhost:5501/swagger/Default/swagger.json ,並且將Model跟 Api分開 (“withSeparateModelsAndApi”: true),並把API放到 apis 這個目錄,把model放到 models 這個目錄。

產生之後的目錄結構如下

如果需要更多 additionalProperties 的資訊,可以拜訪 https://openapi-generator.tech/docs/configuration 可以取得更多的資訊。

當我們把設定檔設定完成以後,便要來設定 package.json 這個檔案

設定 package.json 的快速使用指令

接著打開 package.json 這個檔案,你會看到類似如下畫面

在 script 這邊,可能每個系統與專案都不一樣,因此不必要照著修改成一樣的內容,我們要注意的是其中最下面那行 api ,這裡會使用快速指令讓 openapi-generator-cli 開始作業,產生我們要的API檔案。

"api": "openapi-generator-cli generate  --generator-key v1.0"

其中應該注意 –generator-key v1.0 這個指令,表示我們將使用 generators 的 v1.0,他在剛剛的 openapitools.json 中有設定。他的位置如下:

使用快速指令

由於我們剛剛在 package.json 設定 api 的指令,因此我們可以用

npm run api

或者

pnpm api

或者

yaen api

來產生相關的API與MODEL,他產生的過程大致上長這樣:

查看一下目標目錄(./src/api-services) 應該會看到檔案都個別產生出來,models 因為太多檔案了,就不展示了。

使用API

在 vue 檔案中,import 一個 api 方法。

New 出來後,即可使用該 api 方法。 

以上就是前端框架Vue中使用 openapi-generator-cli 來自動產生API檔案的快速方法。

參考資料

https://www.deer404.info/posts/openapi-gen-api

https://stackoverflow.com/questions/65196962/how-to-use-configuration-file-openapitools-json-with-openapitools-openapi-gen

https://openapi-generator.tech/docs/usage

開源情報: IntelliScraper 一把有智慧的剃刀,幫你括下網路上重要資訊

IntelliScraper 是一個先進的 Python 網頁抓取項目,旨在進行精確的 HTML 內容解析和特徵匹配,以從特定網頁中提取關鍵資訊。利用 BeautifulSoup 和 scikit-learn 等強大的函式庫,它提供了一種高效且靈活的方式來抓取和處理 Web 資料。

想像一下,您是一名數據分析師,需要定期從多個部落格中提取文章和更新。透過 IntelliScraper,您可以輕鬆取得這些數據以進行進一步分析和報告。同樣,如果您是需要監控網站內容變更的 Web 開發人員,IntelliScraper 可以自動執行此流程,從而節省時間和精力。

GitHub: https://github.com/herche-jane/IntelliScraper

Avalonia UI 學習筆記(2) 專案啟動

一段Avalonia程式碼與wpf畫面

啟動專案

找一個空間或者新增一個乾淨的目錄,在該目錄下開啟命令列工具或者終端機,輸入以下命令

dotnet new avalonia.xplat -o MyApp

其中 MyApp 可以替換成你的專案名稱。

這時候會在該目錄底下新增一個依照你所指定的名稱的目錄,其中目錄結構如下

打開MyApp.sln之後,在Visual Studio中大概會像這樣

若出現下面的畫面,嘗試安裝缺少的元件或套件,來解決紅蚯蚓問題。

當我按下安裝時,會跳出安裝視窗,直接安裝即可

之後會跳出需要接受 Android的授權合約視窗

接受之後,就可以開始開發程式了,方案總管的畫面也會變成這樣:

肥米輸入法

周圍是各種程式碼區塊,畫面右邊則有一個輕鬆的人愉快的看著

一個用 C# 開發的仿蝦咪的輸入法,叫做

肥米輸入法

雖然已經好久沒有更新了,但是其中的開發思路倒是可以參考。

參考資料(轉載自該開源專案的內容)

  • 1. 允許控制台:https://stackoverflow.com/questions/4362111/how-do-i-show-a-console-output-window-in-a-forms-application
  • 2、C#全域Keyhook:https://stackoverflow.com/questions/577411/how-can-i-find-the-state-of-numlock-capslock-and-scrolllock-in-net
  • 3.在其他類別中使用表單小工具:https://stackoverflow.com/questions/12983427/accessing-forms-controls-from-another-class
  • 4.令狀表單可以拖移: https://stackoverflow.com/questions/1592876/make-a-borderless-form-movable
  • 5.半形轉全形:時間啟動序為: https://blog.darkthread.net/blog/strconv-half-full-width-notes
  • 6.JsonValue處理liu.json:https://stackoverflow.com/questions/6620165/how-can-i-parse-json-with-c
  • 7、ini-parser:https://github.com/rickyah/ini-parser
  • 8、sendkey範例:https://www.itread01.com/content/1548344359.html
  • 9、線上語法測試;https://dotnetfiddle.net/

Avalonia UI 學習筆記(1) 專案啟動前的準備

一個白板圍繞著 Avalonia UI 進行一個看板活動的敏捷會議

Avalonia UI 是什麼?

Avalonia UI 是一個在 .Net Core 的框架,具備跨平臺特性,可以做到一次開發多平台使用,可應用於 Windows、Linux、MacOS、Android、iOS以及WebAssembly。

官方表示即將推出 VisionOS 以及 Samsung 的 Tizen OS 支援,因此投資學習 Avalonia 是一個很好的選擇。

開始前的準備

在開始之前,訪問官方網站是一個不錯的開始,跟隨著線上文件開始學習路徑也是一個啟動學習的最佳方式。

我已經將學習過程中找到的相關資料放在 Avalonia UI 學習筆記(0) 相關資料 ,有興趣的可以訪問觀看。

接下來的各種學習紀錄都圍繞 .Net 8 以及 Visual Studio 2022 的開發架構與環境中。

安裝專案範本

打開命令列視窗或終端機
輸入

dotnet new install Avalonia.Templates
將安裝下列範本套件:
   Avalonia.Templates

Avalonia.Templates (版本 11.0.2) 已安裝,將會以 最新版本 取代。
Avalonia.Templates::11.0.2 已成功解除安裝。
警告: NuGet 來源 http://192.168.10.31:5555/v3/index.json 不安全,將不會搜尋。若要包含搜尋的來源,請使用 --force。
成功: Avalonia.Templates::11.0.6 已安裝下列範本:
範本名稱                             簡短名稱                   語言     標記
-----------------------------------  -------------------------  -------  -----------------------------------------
Avalonia .NET App                    avalonia.app               [C#],F#  Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia .NET MVVM App               avalonia.mvvm              [C#],F#  Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Cross Platform Application  avalonia.xplat             [C#],F#  Desktop/Xaml/Avalonia/Web/Mobile
Avalonia Resource Dictionary         avalonia.resource                   Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Styles                      avalonia.styles                     Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia TemplatedControl            avalonia.templatedcontrol  [C#],F#  Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia UserControl                 avalonia.usercontrol       [C#],F#  Desktop/Xaml/Avalonia/Windows/Linux/macOS
Avalonia Window                      avalonia.window            [C#],F#  Desktop/Xaml/Avalonia/Windows/Linux/macOS

這裡需要注意的是某些範本只對應某些平台,因此開發之前謹慎選擇範本會讓開發效率較為順暢。

avalonia.xplat 是跨平臺的範本

avalonia.mvvm 是最常用的範本,但不支援移動裝置。

安裝擴充套件

下載擴充套件 Avalonia for Visual Studio 2022 並安裝,安裝後,VS就能讀寫 Avalonia 的 XAML。

開始前的準備工作到這裡大概就差不多了,下一篇將開始建立一個Avalonia專案。

Avalonia UI 學習筆記(0) 相關資料

線上文件

教學影片

參考資料

額外的搭配資料