2

我现在使用来自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)我很难理解。

非常感谢!

4

1 回答 1

3

我也需要这样做,我想我可以做到这一点,看看我的 curl 示例,希望能有所帮助:

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" }
于 2020-10-19T19:43:08.400 回答