3
1

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 1 year has passed since last update.

Webアプリ構築カレンダーAdvent Calendar 2023

Day 14

【Day 14】BFF 環境構築 - WireMock

Last updated at Posted at 2023-12-13

はじめに

スライド15.PNG


2023年アドベントカレンダー14日目です。

前回からBFFの開発を始めるために環境構築をしています

image.png

WireMock

WireMockとは

WireMockは、モックサーバーを簡単に構築するためのツールです。
主にテストで使われて、実際のサーバーの代わりに動作し、APIのモックをすることができます。

Dockerで起動

wiremockはjava上で動作するアプリケーションなので、javaのimageを使って構築していきます

Dockerfile
FROM openjdk:8-jre-alpine

ENV WIREMOCK_VERSION 2.27.2

RUN wget https://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/${WIREMOCK_VERSION}/wiremock-standalone-${WIREMOCK_VERSION}.jar -O wiremock-standalone.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "wiremock-standalone.jar"]

モックしたい情報を./mappings/*に設置します

mock_get_blogs.json
{
  "request": {
    "method": "GET",
    "url": "/blogs"
  },
  "response": {
    "status": 200,
    "headers": {
      "Content-Type": "application/json"
    },
    "jsonBody": {
      "blogs": [
        {
          "id": "8c7cf457-5ffe-44c3-98b3-c529c09e9999",
          "title": "title1",
          "author": "author1",
          "body": "body1",
          "createdAt": "2019-01-01T00:00:00.000Z"
        }
      ]
    }
  }
}

起動してみます

#!/bin/bash

# イメージをビルドする
docker build -t wiremock .

# コンテナを実行する
docker run -it --rm -p 8080:8080 -v "$(pwd)/mappings:/mappings" --name wiremock wiremock

Dockerのみでも十分動きますが、一応docker composeでも動くようにcompose.yamlファイルを載せておきます

compose.yaml
version: '3'

services:
  app:
    build: .
    ports:
      - '8080:8080'
    volumes:
      - './mappings/:/mappings'
    tty: true
    stdin_open: true
docker compose up

では起動していきます

$ docker run -it --rm -p 8080:8080 -v "$(pwd)/mappings:/mappings" --name wiremock wiremock

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
 /$$      /$$ /$$                     /$$      /$$                     /$$      
| $$  /$ | $$|__/                    | $$$    /$$$                    | $$      
| $$ /$$$| $$ /$$  /$$$$$$   /$$$$$$ | $$$$  /$$$$  /$$$$$$   /$$$$$$$| $$   /$$
| $$/$$ $$ $$| $$ /$$__  $$ /$$__  $$| $$ $$/$$ $$ /$$__  $$ /$$_____/| $$  /$$/
| $$$$_  $$$$| $$| $$  \__/| $$$$$$$$| $$  $$$| $$| $$  \ $$| $$      | $$$$$$/ 
| $$$/ \  $$$| $$| $$      | $$_____/| $$\  $ | $$| $$  | $$| $$      | $$_  $$ 
| $$/   \  $$| $$| $$      |  $$$$$$$| $$ \/  | $$|  $$$$$$/|  $$$$$$$| $$ \  $$
|__/     \__/|__/|__/       \_______/|__/     |__/ \______/  \_______/|__/  \__/

port:                         8080
enable-browser-proxying:      false
disable-banner:               false
no-request-journal:           false
verbose:                      false

起動しました 👍

ではマッピングを確認してみましょう

/__admin/mappingsで登録されているマッピングを確認できます。

$ curl http://localhost:8080/__admin/mappings | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   619    0   619    0     0   276k      0 --:--:-- --:--:-- --:--:--  302k

{
  "mappings": [
    {
      "id": "2b7edb61-beec-4ad7-bab5-a430f6871278",
      "request": {
        "url": "/blogs",
        "method": "GET"
      },
      "response": {
        "status": 200,
        "jsonBody": {
          "blogs": [
            {
              "id": "8c7cf457-5ffe-44c3-98b3-c529c09e9999",
              "title": "title1",
              "author": "author1",
              "body": "body1",
              "createdAt": "2019-01-01T00:00:00.000Z"
            }
          ]
        },
        "headers": {
          "Content-Type": "application/json"
        }
      },
      "uuid": "2b7edb61-beec-4ad7-bab5-a430f6871278"
    }
  ],
  "meta": {
    "total": 1
  }
}

/blogsにマッピングされていることが確認できましたので、リクエストを送ってみます。

$ curl http://localhost:8080/blogs | jq .
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   147    0   147    0     0  32967      0 --:--:-- --:--:-- --:--:-- 36750
{
  "blogs": [
    {
      "id": "8c7cf457-5ffe-44c3-98b3-c529c09e9999",
      "title": "title1",
      "author": "author1",
      "body": "body1",
      "createdAt": "2019-01-01T00:00:00.000Z"
    }
  ]
}

いい感じですね👍

これでBFFの開発を進められるので、こちらのストーリーはDoneになりました

image.png

次回からは実際にBFFの実装を進めていきます

3
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?