Wiremockサーバーのスタンドアロンインスタンスがあります。マッピングは、マッピングフォルダーの下にjsonファイルとして保存されます。応答に動的ID(整数)を返す必要があるPOST要求があります。これをjsonファイルで構成する方法はありますか?
これは 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"]
}
}
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
上記の例を機能させるには、スタンドアロンのjarを--global-response-templatingで実行する必要がありました。それから、例えば、私が望んでいた{{now}}が機能しているのを見ました。ドキュメントにこれが指定されているかどうかはわかりません-常に役立つ--helpを試しました。