😳

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