我需要为一个看起来像这样的请求编写一个存根:
[
{ "todo_id": 1 },
{ "todo_id": 2 }
]
请求中todo对象的数量可能会有所不同。
我目前的回复如下:
"response": {
"status": 200,
"body": "[ {{#each (jsonPath request.body '$') as |todo|}}
{ "todo_id": {{todo.todo_id}} },
{{/each}}
]"
}
请注意,我把正文隔开是为了让它更可读,在实际的存根中,它都在一行上。
所以我的问题是,如果请求中传递了多个对象,我需要在todo对象后面加逗号。然而,这也给最后一个对象留下了一个逗号,所以如果发送了上面的请求,这将是响应:
[
{ "todo_id": 1 },
{ "todo_id": 2 },
]
最后一个逗号使.json()
方法在Python应用程序中失败,该应用程序需要从该WireMock存根读取响应。
有没有想过如何去掉最后一个逗号?我想可能在逗号周围有一个eq
条件,并检查当前的todo
变量是否与{{jsonPath request.body '$.[-1]'}}
相同,但这样写:
{{#eq todo {{jsonPath request.body '$.[-1]'}} }}
也不起作用。
任何关于如何去掉最后一个逗号的建议都将不胜感激。谢谢:(
在谷歌群组上得到了答案。
可以在每个循环中使用@last
来检测您何时在最后一个项目上,例如:
{{#each (jsonPath request.body '$.things') as |thing|}}
{{#if @last}}
{ "thing": {{{thing}}} }
{{else}}
{ "thing": {{{thing}}} },
{{/if}}
{{/each}}