Help us understand the problem. What is going on with this article?

[Swagger] OpenAPI3.0 で記述したAPIドキュメントからapisproutを使ってモックサーバーを構築する

More than 1 year has passed since last update.

Intro

OpenAPI(Swagger)でAPI定義を記述をすると、簡単にAPIドキュメントを作成し、API仕様をコード管理できるメリットがあります。

もう一つのメリットとして記述したAPI定義からAPIのモックサーバーも簡単に生成することができます。モックサーバーを開発の初期段階に簡単に用意できることで、ドキュメントファーストな開発ができます。(以下、開発フローのイメージです)

62347593-2c249580-b535-11e9-9b61-e846bb034751.png

参考リンク

APIモック(mock)サーバーを作る

swagger-codegen でコードを生成してモックサーバーを立てる方法もありますが、今回は以下のAPI定義から apisprout を使いモックサーバーを立ててみます。

openapi.yml
openapi: 3.0.0
info:
  version: 1.0.0
  title: Swagger sample
paths:
  /users:
    get:
      summary: Usersを取得するAPIです。
      responses:
        '200':
          description: HTTPステータスコード200と以下の情報を含むJSONオブジェクトを返します。
          content:
            application/json:
              schema:
                type: object
                properties:
                  user_id:
                    type: string
                    example: 1234567

Usage

go get

apisprout は Goで作られているので go get コマンドでインストールも可能です。

起動方法はこれだけ。 apisprout opeapi.yml めちゃ簡単ですね。

go get github.com/danielgtaylor/apisprout
apisprout opeapi.yml

🌱 Sprouting Swagger sample on port 8000
curl localhost:8000/users
{
  "user_id": 1234567
}

Docker

docker pull danielgtaylor/apisprout
docker run -p 8000:8000 -v $FULLPATH/openapi.yml:/openapi.yml danielgtaylor/apisprout /openapi.yml

🌱 Sprouting Swagger sample on port 8000
curl localhost:8000/users
{
  "user_id": 1234567
}

最後に

OpenAPI(Swagger)で記述することで、APIドキュメントやモックサーバーを簡単に用意することができました。APIドキュメントファーストの開発をすることで、開発の生産性もあがりそうです。

簡単に導入し試すことができるので機会があれば、トライしてみてください。:raised_hand:

lancers
テクノロジーで誰もが自分らしく働ける社会をつくる。日本最大級のクラウドソーシング「ランサーズ」を運営
https://www.lancers.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away