3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MMockでRESTfulなモックサーバーを作る

Last updated at Posted at 2020-10-24

MMockの使用方法を簡単にご紹介
##MMockとは
リポジトリ:https://github.com/jmartin82/mmock

主にGo言語によって記述された、APIのmockサーバーです。

**「実際のAPIがまだ無いから、バックエンドの処理を作れない😫」**といった時に、ymljsonを定義してあげることで簡単に仮のAPIを作成することができます。

##導入方法(docker-compose)
今回は環境に依存した導入方法ではなく、docker及びdocker composeを使用して導入していきます。

Dockerhub:https://hub.docker.com/r/jordimartin/mmock

ディレクトリ構造

- app01/
  - mmock/
    - 200_get.yml (APIの仕様を定義したファイル)
  - docker-compose.yml
docker-compose.yml
version: '3'
services:
  mmock:
    image: jordimartin/mmock:v3.0.0
    restart: 'always'
    volumes:
      - ./mmock:/config
    ports:
      - '8082:8082'
      - '8083:8083'

解説
構造
configディレクトリ下にymljsonを保存することで、自動でサーバーに反映されていきます。今回はdocker環境で実行しているため、./mmockディレクトリをマウントしています。

ポート番号について
MMockでは、デフォルトで8082はAPIサーバー、8083はコンソールにポート番号が割り当てられております。こちらも、ホストPCの同一ポートにポートフォワードしております。

###実際に使ってみる

localhost:8082でコンソールにアクセスするとこのような画面が表示され、リアルタイムでAPIへのアクセスを監視できるようになっております。
qiita_1.png

試しに以下のようなymlファイルを、./mmock下に定義してみましょう。

200_get.yml
request:
  method: GET
  path: "/hello/*"
response:
  statusCode: 200
  headers:
    Content-Type:
    - application/json
  body: '{"hello": "{{request.query.name}}, my name is {{fake.FirstName}}"}'

この状態で、`localhost:8083/hello?name=john doe`を叩くと、 ![qiita_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619992/d856633a-bd00-0349-582e-72edeb727094.png) 一般的なAPIと同様、リクエストに応じたレスポンスを返してくれます。

ちなみにコンソール側にはこのように表示されます。リクエスト、レスポンスの内容を詳細に確認出来ますね。
qiita_4.png

基本的な機能は以上となります。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?