当サイトは、アフィリエイト広告を利用しています
OpenAPIを使ってREST APIの設計をするにあたって
OpenAPIとSwaggerについて調べたことを
忘備録としてまとめておく。
OpenAPIとは「OpenAPI Specification」の略でREST APIのコードやドキュメントを生成できるREST API仕様の記述フォーマットのこと。
APIがどのように動作するか、どのようなデータを受け取り、どのようなデータを返すかを定義している。
細かくいうと記述フォーマットなので
という仕様を定義している
このフォーマットにしたがって作成されたファイル(YAML形式/JSON形式)を
と呼ぶ。
OpenAPI仕様書のことをSwagger Specファイルと書いてることも
多々ある。
OpenAPIで書き方の仕様が定義されている(どの項目をどう書けばいいのか)ので
その決まりに従って
で書くことができる。
OpenAPIはREST APIの記述フォーマットで
「何の項目をどのような形式で記載すればよいのか」という仕様を定義している
と言われてもイメージつかないと思うので、具体的にみてみる。
※少なくとも自分はよくわからなかった。。。
OpenAPIで簡単なAPI仕様書を作ってみる。
openapi: "3.0.0"info:version: "1.0.0"title: "Flask API"paths:/:get:summary: "Hello endpoint"responses:'200':description: "Successful response"content:text/plain:schema:type: stringexample: "Hello from Flask!!!"
このYAMLには
というフィールドがある。このうち「openapi」、「paths」は必須。
また上記のフィールドにはサブフィールドがあり、例えば「info」フィールドには
がある。このうち、「version」は必須
というような感じで「何の項目」を記載すればいいかが明確に
決まっている。
これが
OpenAPIはREST APIの記述フォーマットで
「何の項目をどのような形式で記載すればよいのか」という仕様を定義している
ということだと認識している。
必須でない項目は書かなくてもいい。
詳しくはOpenAPI Specification参照
上記のOpenAPI仕様書の実際ソースは下記になる
from flask import Flask# flaskアプリケーションインスタンス作成flask_api = Flask(__name__)@flask_api.route('/')def hello():return "Hello from Flask!!!"
flaskで作ったgetリクエストを受け付けるだけのREST API
OpenAPIを調べていると必ずセットで「swagger」という文言がでてくる。
そして、~OpenAPIはもともと「Swagger」で~的な文章がでてくるのが
とりあえず無視して
Swaggerは「OpenAPIを用いてREST APIを設計する際に使用するツールセットのこと」と
としておく。
よく使われるものとしては下記がある
上記でも書いたがOpenAPI仕様に従って作成されたAPI仕様書のこと
Swagger Specの設計書を記載するためのエディタ
Dockerイメージも配布されており、ローカルでの実行も可能。
OpenAPI仕様書(Swagger Spec)の記述を、動的にAPIドキュメントとしてレンダリングするツール
Swagger Spec で記載された設計からAPIのスタブを自動生成できる
よく意味を混同しやすいOpenAPIとSwaggerについて整理しておく。
OpenAPI仕様書(Swagger Spec)をSwaggerツールを作って作成するので
成果物と手段という感じ。
VScodeで拡張機能「OpenAPI (Swagger) Editor」を入れれば
VScode上でOpenAPI仕様書(Swagger Spec)を作成できる。
OpenAPI (Swagger) EditorはSwaggerツールでいうと下記の二つが備わっている
つまり、VScodeでOpenAPI仕様書(Swagger Spec)を作成、編集し
プレビューを確認することができる。
※リアルタイム編集が可能
また入力補完や入力ミスの警告もしてくれる
右側にでてるのがSwagger UI
よく似た拡張機能として「Swagger Viewer」がある。
こちらもリアルタイム編集ができるので、VScode上でOpenAPI仕様書を
作るなら、どちらかは必須で入れておく必要がある。
※OpenAPI (Swagger) Editorの方が高機能だが、どちらもあまり違いはなさそう。
VScodeやSwaggerツールを使って作成したOpenAPI仕様書を
利用して下記のことができる。
それぞれ別のツールが必要にはなる。
使うツールは「Redoc」
RedocはHTMLベースのドキュメントを生成・閲覧できるようにするツール
OpenAPI仕様書をSwaggerUIよりも見やすいドキュメントとして閲覧、出力できる。
使うツールは「Prism」
Prismは、API仕様書をもとにモックサーバーを構築するためのツール。
API仕様書から自動でモックサーバーを構築できる
使うツールは「Postman」
Postmanは、APIのテストを実行するためのツール。
API仕様書をimportすることで、テストを作成することができる。
OpenAPIを調べると、Swaggerも必ず出てくるので
OpenAPIとSwaggerのそれぞれ何なのか?また二つの関係について
整理してみた。
OpenAPIについてはその他ツール(RedocやPostmanなど)と連携することで、
さらに便利に使えそうなので、おいおい調べて取り入れていきたい。