web-dev-qa-db-ja.com

Wiremock Standalone with Dynamic response

Wiremockサーバーのスタンドアロンインスタンスがあります。マッピングは、マッピングフォルダーの下にjsonファイルとして保存されます。応答に動的ID(整数)を返す必要があるPOST要求があります。これをjsonファイルで構成する方法はありますか?

5
alltej

これは OpenTableのWiremock Body Transformer の完全なユースケースのようです。

次のようにスタンドアロンサーバーと簡単に統合できます。

Java -cp "wiremock-body-transformer-1.1.6.jar:wiremock-2.3.1-standalone.jar" com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --verbose --extensions com.opentable.extension.BodyTransformer

また、応答で照合する動的変数を簡単に指定できます。

リクエストに何も指定せずにランダムな整数を取得する例を次に示します。ただし、リクエスト内の特定の変数をレスポンスに一致させる必要がある場合は、この拡張機能でも非常に実行可能であり、多数の例が次の場所にあります。 README。

{
    "request": {
        "method": "POST",
        "urlPath": "/transform",
    },
    "response": {
        "status": 200,
        "body": "{\"randomInteger\": \"$(!RandomInteger)\"}",
        "headers": {
            "Content-Type": "application/json"
        },
        "transformers": ["body-transformer"]
    }
}
2
Mark Han

WireMockには ランダム文字列 を生成するための多数の応答テンプレートヘルパー関数があります。以下の例では、UUIDの生成に使用していますが、他にもいくつかのオプションがあります。

マッピングファイル:dynamic_id.json

{
  "request": {
    "method": "POST",
    "url": "/dynamic_id"
  },
  "response": {
    "headers": {
      "Content-Type": "application/json"
    },
    "status": 200,
    "body": "{{randomValue type='UUID'}}",
    "transformers": ["response-template"]

  }
}

空のPOST http:// wiremock/dynamic_id を使用すると、次のようなIDが返されます:c2e6bf32-c9a3-45c0-b988-94fad04cc7a2

WireMockを起動します。

Java -jar wiremock-standalone-2.18.0.jar --port 8181 --verbose --local-response-templating
0
A. Kootstra

上記の例を機能させるには、スタンドアロンのjarを--global-response-templatingで実行する必要がありました。それから、例えば、私が望んでいた{{now}}が機能しているのを見ました。ドキュメントにこれが指定されているかどうかはわかりません-常に役立つ--helpを試しました。

0
Jeff