😳
Stoplight PrismでOpenAPIをバリデーション&モック
Prismとは
PrismとはOpenAPI v2(Swagger)とOpenAPI v3のAPIモックパッケージです。
OpenAPI 仕様に基づいて API の操作をモックすることができるみたいです。
主に以下の用途で使われるみたいです。
- バックエンドが未完成でもフロントが開発できる
- OpenAPI ファイルの文法エラーを検証したい
- 仕様に基づくリクエスト/レスポンスをテストしたい
インストール & PATH 設定
公式に書いてある通り、npmを使ってグローバルにinstallします。
npm install -g @stoplight/prism-cli
installしたらprismが使えるかどうか確認します
prism --version
zsh: command not found: prism
どうやらPATHが通っていないようです。
グローバルにインストールされた npm パッケージがどこに保存されているのか確認します。
npm config get prefix
/Users/username/.asdf/installs/nodejs/18.16.1
私の場合はhomebrewではなくNode.jsをasdf経由でインストールしているため、asdf が用意した環境下にグローバルパッケージが置かれる設定になっているみたいです。
binディレクトリをPATHに登録します。
'export PATH="/Users/username/.asdf/installs/nodejs/18.16.1/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
PATHが通っていることを確認できました。
prism --version
5.14.2
モックサーバーの起動
prism mock reference/(プロジェクトからのパスを指定).json
結果
prism is listening on http://127.0.0.1:4010
curl やブラウザでアクセスすると、OpenAPIの example に基づいたレスポンスが展開されます。
検証するAPIを定義したファイルはyaml、yml、jsonの形式に対応しているみたいです。
例 curlコマンドでアクセスしてみる
curl http://localhost:4010/list
ブラウザでhttp://localhost:4010/listアクセスすると以下のjsonが帰ってきていました。
{
"lists": [
{
"id": 1,
"title": "タイトル",
"content": "内容",
"expired_at": "2024-01-01 00:00:00",
"created_at": "2024-01-01 00:00:00",
"status": "完了"
}
],
}
OpenAPI文法バリデーション
API仕様書(OpenAPI 形式の YAML または JSON)が正しく書けているかをチェックしたいときは、swagger-cli が便利みたいです。
installします。
npm install -g @apidevtools/swagger-cli
下記を実行します。
swagger-cli validate reference/(プロジェクトからのパスを指定).json
成功すると有効であると表示されました。
reference/(プロジェクトからのパスを指定).json is valid
Discussion