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

问题描述

我现在正在使用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示例,希望对我有所帮助:

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" }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...