開発時にモックサーバーを立てて未完成のサービスとの結合を検証する機会はよくあると思います。
その際に、OpenAPI定義を基にモックサーバーを簡単に構築することができるPrismというOSS製品が便利でしたので、使い方をご紹介いたします。
Prismとは
PrismはOpenAPI定義ファイルを基にモックサーバーを構築できるOSS製品です。
OpenAPI定義ファイルがあれば、手軽にモックサーバーの構築ができ動作確認等を行うことができます。
使い方
1. OpenAPI定義ファイルの準備
まずはOpenAPIで記載されたAPI仕様書を準備します。
今回はサンプルとして、以下のような定義ファイルを使用します。
exampleに設定した値がモックサーバーのレスポンスとして返却されます。
openapi: 3.0.3
info:
description: "Sample API"
version: "1.3"
title: "Sample API"
servers:
- url: https://sample/v1
paths:
/products:
get:
summary: "GetProductsName"
description: "販売している商品の名前を取得する"
responses:
"200":
description: "Success"
content:
application/json:
schema:
type: object
properties:
for_sales_products:
type: array
examples:
example-1:
value:
for_sales_products: [ "カメラ", "テレビ", "洗濯機" ]
example-2:
value:
for_sales_products: [ "掃除機", "エアコン", "スマートフォン" ]
"500":
description: "Error"
content:
application/json:
schema:
type: object
required:
- code
- message
properties:
code:
description: "エラーコード"
type: integer
example: 99
message:
description: "エラーメッセージ"
type: string
example: "failed.."
2. モックサーバーの起動
Prsim専用コマンドの他に、npmやyarn、dockerを用いた構築が可能です。
今回はdockerを利用して、下記コマンドにてモックサーバーの起動を行います。
docker run --init --rm -v $(pwd):/tmp -p 4010:4010 stoplight/prism:4 mock -h 0.0.0.0 "sample.yaml"
3. リクエストの実行
上記サンプルの場合、http://0.0.0.0:4010にてホストされているため、こちらにリクエストを実行します。
$ curl -X GET -k http://0.0.0.0:4010/products
{"for_sales_products":["カメラ","テレビ","洗濯機"]}
上記のような形で、exampleに設定した値が返却されます。
別のexampleレスポンスが欲しい場合は、以下のようにヘッダー内で指定を行います。
$ curl -X GET -H "Prefer:example=example-2" -k http://0.0.0.0:4010/products
{"for_sales_products":["掃除機","エアコン","スマートフォン"]}
または、ステータスコードでの指定も可能です。
$ curl -X GET -H "Prefer:code=500" -k http://0.0.0.0:4010/products
{"code":99,"message":"failed.."}
さいごに
このように、API仕様書から簡単にモックサーバーの構築が可能であり、ちょっとした結合テスト等にも大変重宝されるツールであるかと思います。
モックサーバー構築の手間を省き、工数の短縮等に繋がれば幸いです。

