如何在WireMock.net中匹配URL模板请求?
在WireMock.net中匹配
/path/{id}格式的URL请求 WireMock.net 提供了多种方式匹配带占位符的URL路径,以下是两种最常用的实现方案:
1. 路径模板匹配(官方推荐)
直接通过WithPath方法传入带占位符的路径模板/path/{id},WireMock会自动匹配所有符合该格式的请求,同时还能在响应逻辑中获取id参数的值。
示例代码:
using WireMock.Server; using WireMock.RequestBuilders; using WireMock.ResponseBuilders; var server = WireMockServer.Start(); server.Given(Request.Create() .WithPath("/path/{id}") .UsingGet()) .RespondWith(Response.Create() .WithStatusCode(200) .WithBody(request => $"匹配到的ID是: {request.PathParameters["id"]}"));
这段代码会匹配所有GET /path/xxx格式的请求(比如/path/1234、/path/abc),并返回包含对应id值的响应。
2. 正则表达式匹配
如果需要对id格式做严格限制(比如仅允许数字),可以用正则表达式定义匹配规则:
示例代码:
server.Given(Request.Create() .WithPath(@"^/path/\d+$") // 仅匹配id为纯数字的请求,如/path/1234 .UsingGet()) .RespondWith(Response.Create() .WithStatusCode(200) .WithBody("匹配到数字ID的请求"));
这里的正则^/path/\d+$确保只有/path/后跟随纯数字的请求才会被匹配。
验证匹配效果
启动服务器后,发送以下请求即可验证:
GET http://localhost:{端口}/path/1234→ 会被上述两种规则匹配(若同时定义,优先级取决于规则创建顺序)GET http://localhost:{端口}/path/abc→ 仅会被第一种路径模板规则匹配
内容的提问来源于stack exchange,提问作者Anthony Johnston
相关产品推荐
相关产品推荐

