如何在mock服务器中设计动态响应



我现在使用https://www.mock-server.com/并在docker容器中运行它。

现在,我想让响应随着请求主体的变化而变化。我在官方网站上查找动态响应已经有一段时间了,但不知道如何从请求体中提取特定数据。

curl -v -X PUT "http://localhost:1080/mockserver/expectation" -d '{
"httpRequest": {
"path": "/some/path"
},
"httpResponseTemplate": {
"template": "return { statusCode: 200, body:  request.body };",
"templateType": "JAVASCRIPT"
}
}'

上面的代码是创建一个简单的期望,它将响应请求主体。例如,

$curl http://localhost:1080/some/path -d '{"name":"welly"}'
{"name":"welly"}  //response

现在我想改变回应的方式。例如,我想输入{a:a,b:b}并获得响应{a:b,b:a}

那么,如何修改请求体中的json数据并将其提供给响应呢?我想有一些方法可以从json文件中提取特定的数据,或者修改json数据等。此外,我想知道如何更好地搜索详细信息,因为官方网站和完整的REST API json规范(https://app.swaggerhub.com/apis/jamesdbloom/mock-server-openapi/5.11.x#/expectation/put_expectation)我很难理解。

非常感谢!

我也需要这样做,我想我已经做到了。看看我的旋度示例,我希望这会有所帮助:

curl -v -X PUT "http://localhost:1080/mockserver/expectation" -d '{
"httpRequest": {
"path": "/api/fun",
"method": "POST"
},
"httpResponseTemplate": {
"template": "
req = JSON.parse(request.body.string)
rid = req["id"]
return { statusCode: 201, body: {new_id: rid} }
",
"templateType": "JAVASCRIPT"
}}'

在你这样做之后,如果发送:

curl -X POST http://localhost:1080/api/fun --data '{"id": "test_1"}'

它应该返回:

{ "new_id" : "test_1" }

通过Nashorn引擎支持Javascript模板,因此Java 15将不再提供。这是Mockserver文档中的注释。

从Java 15开始,Nashorn不再是JDK的一部分,但它是一个需要Java 11+的单独库。一旦MockServer的最低Java版本是11,那么就会使用这个单独的库。

最新更新