Wiremock独立版:如何让响应与Webhook使用同一随机UUID值?
解决Wiremock响应与Webhook复用同一随机UUID的问题
你的问题出在{{randomValue type='UUID'}}会在每个调用位置独立生成值,所以响应和Webhook会得到不同的UUID。要实现同一请求中复用相同UUID,可通过Wiremock的**场景(Scenarios)**功能存储生成的UUID,再在两处引用这个变量。
修改后的配置示例
{ "priority": 1, "scenarioName": "GENERATE_SHARED_UUID", "requiredScenarioState": "START", "newScenarioState": "UUID_GENERATED", "request": { "method": "POST", "urlPath": "/v1/businesses" }, "response": { "status": 200, "jsonBody": { "id": "{{#setScenarioState scenarioName='GENERATE_SHARED_UUID' variables=(map 'uuid' (randomValue type='UUID'))}}{{/setScenarioState}}{{scenarioVariable 'uuid'}}" } }, "serveEventListeners": [ { "name": "webhook", "parameters": { "method": "POST", "url": "http://some-url/", "headers": { "Content-Type": "application/json" }, "body": "{\"id\": \"{{scenarioVariable 'uuid'}}\"}" } } ] }
配置说明
- 场景定义:通过
scenarioName创建场景,requiredScenarioState设为初始状态START,每次请求后切换到UUID_GENERATED,确保每次请求都会重新生成UUID。 - UUID生成与存储:在响应的
id字段中,先通过{{setScenarioState}}生成UUID并存入场景变量uuid,再用{{scenarioVariable 'uuid'}}输出这个值。 - Webhook复用变量:Webhook的body中直接引用场景变量
{{scenarioVariable 'uuid'}},就能拿到和响应中相同的UUID。
注意事项
- 确保Wiremock 3.4.2支持场景变量的模板语法,该功能在Wiremock 2.27+已稳定支持。
- 并发请求时,场景状态会按请求上下文隔离,各自的UUID不会互相干扰。
内容的提问来源于stack exchange,提问作者Nizan Stein
相关产品推荐
相关产品推荐

