OpenAPI 和 Swagger 是什麼?他們是什麼關係?Swagger 規範和 Swagger 工具不同嗎?

Swagger 簡史

Swagger 最早由非營利組織 Wordnik 開發
2011 年 8 月 Swagger 發布 1.0 版本
2014 年 9 月 Swagger 發布 2.0 版本
2015 年 3 月 SmartBear Software 收購 Wordnik 手上的 Swagger API 規範
2015 年 11 月 SmartBear Software 將 Swagger API 規範捐贈給 Linux 基金會
2016 年 Swagger 規範更名為 OpenAPI 規範 (Open API Initiative, OAS)
2017 年 7 月 OpenAPI 發布 3.0.0 版本
2021 年 2 月 OpenAPI 發布 3.1.0 版本

因為先發布 Swagger 2.0,才捐贈給 Linux 基金會,所以雖然 OpenAPI 規範 2.0 等於 Swagger 2.0,但網路上的文章基本上都是寫 Swagger 2.0 而不是 OpenAPI 2.0

OpenAPI 規範是什麼?

應用程式介面(Application Programming Interface, API),是一種讓應用程式與第三方程式或網站進行交互的方式。
而 API 資訊文件該怎麼撰寫呢?這就是 OpenAPI 規範的用途了。依照這個規則,大家就知道 get, post 或是查詢參數要怎麼寫在文件上面

Swagger 工具是什麼?

SmartBear Software 公司捐出去的只有「規範」,以粗略的比喻來說就像是 Json 的大括號後面要接小括號,陣列要怎麼呈現出來這樣。
SmartBear Software 公司仍然保有他們開發的各式各樣的「工具」,例如能夠及時預覽的線上編輯器等等。

他們有的各類工具(服務):
Swagger UI : 將 OpenAPI 格式的文件以 HTML 的形式顯示,能夠在網頁中直接測試呼叫 API 並回應測試資訊。
Swagger Editor : YAML 格式的線上編輯工具,能夠及時瀏覽文件,以 Swagger UI 的方式呈現。
Swagger Codegen : 從 OpenAPI 文件自動產生成各種語言的 API 實作。
Swagger Parser : 從 OpenAPI 文件建立 Java 實作。
Swagger Core : 用於建立和使用 OpenAPI 定義的 Java 相關類別庫
Swagger Inspector : 在雲端測試 API 的工具。
SwaggerHub : Swagger Editor 的進階版,再加上文件儲存、發布、分享等功能(免費版本只能設定為公開)
...待補充

不過,我們現在常說的 Swagger,其實應該是在說 Swagger 工具,而不是「單純的 Swagger 規範」

讓我們來看看幾個在 104 上有關於 Swagger 的求職資訊:
1. 能熟練使用 (Postman, Swagger )等測試工具

這裡在說的應該是指操作 Swagger UI (當然也有可能指的是Swagger Inspector)

2. 熟悉用 Slate 或是 Swagger 撰寫 API 文件
應該指的是 Swagger Editor

3. 透過 Swagger 自動建立 REST API 文件。  應該就是指 NSwag 或是 Swashbuckle 了

撰寫 OpenAPI 3.0 的方式

雖然有 Swagger Editor 和 SwaggerHub,但是都各有缺點(不易儲存和免費版只能設為公開)
所以筆者比較習慣在 VS Code 上面安裝套件來撰寫 OpenAPI 文件,下面是筆者推薦的兩個 VS Code 套件:

1. Swagger Viewer

2. OpenAPI (Swagger) Editor


參考資料:
What Is the Difference Between Swagger and OpenAPI?
We need to talk: OpenAPI 3 is 4 years old, but Swagger 2 is still predominant
SmartBear Software
OpenAPI Specification
What is the different between io.swagger.annotations and com.wordnik.swagger.annotations

留言