如何用WireMock独立版按查询参数返回JSON数组单个对象?
可行,实现方法如下
第一步:启动WireMock时启用响应模板功能,启动命令添加对应参数:
java -jar wiremock-jre8-standalone.jar --global-response-templating第二步:修改mappings中的接口配置,利用WireMock的模板语法根据查询参数过滤JSON数组对象:
假设你的fileName.json内容是如下结构的JSON数组:[ {"id": "1", "name": "张三"}, {"id": "2", "name": "李四"} ]调整后的mapping配置示例:
{ "mappings": [ { "request": { "url": "/path", "method": "GET", "queryParameters": { "id": { "matches": ".+" } } }, "response": { "status": 200, "body": "{{#filter (fromFile \"fileName.json\") (fn (item) (equal (get item \"id\") (queryParam \"id\")))}}{{this}}{{/filter}}", "headers": { "Content-Type": "application/json" } } } ] }核心逻辑说明:
(fromFile "fileName.json"):读取外部JSON文件的数组内容filter辅助函数:遍历数组,筛选出id与请求查询参数id匹配的对象(queryParam "id"):获取请求携带的id查询参数值
额外注意:
- 若查询参数
id是数字类型,需保证文件中对应字段也是数字类型,或通过toString转换后再做比较 - 若未匹配到对应对象,会返回空内容,可添加默认处理逻辑,比如在
filter块后追加{{else}}{"error": "数据不存在"} {{/filter}}返回错误提示
- 若查询参数
内容的提问来源于stack exchange,提问作者6ig6or6
相关产品推荐
相关产品推荐

