Wiremock 捕获路径参数并在响应正文中返回

Jav*_*Man 6 wiremock

我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL 如下:

http://localhost:8089/api/account/abc@abc.com
Run Code Online (Sandbox Code Playgroud)

那么我应该收到如下回复:

{ 
  "account" : "abc@abc.com" 
}
Run Code Online (Sandbox Code Playgroud)

简而言之,路径参数在响应正文中返回。我可以使用urlPathPatternset to 使请求 URL 通用,/api/account/([a-z]*)但是我不确定我应该如何abc@abc.com使用正则表达式在响应中捕获和返回它。

A. *_*tra 9

在 WireMock 中,正则表达式可用于识别请求匹配中的电子邮件格式。出于本示例的目的,我使用了一个非常粗略的示例。您的生产实施可能需要更强大的方法。

这个请求:

http://localhost:8181/api/account/someone@somewhere.net
Run Code Online (Sandbox Code Playgroud)

与此规则匹配:

{
    "request": {
        "method": "GET",
        "urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
    },
    "response": {
        "status": 200,
        "jsonBody": {
            "account": "{{request.path.[2]}}"
        },
        "transformers": ["response-template"],
        "headers": {
            "Content-Type": "application/json"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并返回此响应:

{
  "account": "someone@somewhere.net"
}
Run Code Online (Sandbox Code Playgroud)

它利用了WireMock中的响应模板处理功能。的请求模型变量[ {{request.path.[2]}}]可用于获得从所述请求部分。