当前位置: 首页 > 知识库问答 >
问题:

线框:根据请求参数选择正文文件名

宰鸿博
2023-03-14

我正在使用线束来模拟http服务器,并且我正在从json文件中返回响应(使用BodyFile方法)。

现在我想根据请求参数选择并返回响应json文件。对于下面的例子,我想定义一个存根,以便根据请求参数选择主体文件。

myMockServer.stubFor(
       get(urlEqualTo(myEndPoint+ "?key=key1"))
       .willReturn(aResponse().withStatus(200)
       .withHeader("Content-Type", "application/json")
       .withBodyFile("response_key1.json")

myMockServer.stubFor(
       get(urlEqualTo(myEndPoint+ "?key=key2"))
       .willReturn(aResponse().withStatus(200)
       .withHeader("Content-Type", "application/json")
       .withBodyFile("response_key2.json")
myMockServer.stubFor(
       get(urlEqualTo(myEndPoint+ "?key=key3"))
       .willReturn(aResponse().withStatus(200)
       .withHeader("Content-Type", "application/json")
       .withBodyFile("response_key3.json")

知道这怎么可能吗?我尝试定义转换器,但无法从覆盖方法中的响应对象获取流源路径,因此无法使用该appraoch。非常感谢…

共有2个答案

姚钊
2023-03-14

这可以通过使用Handlebar提供的内置模板帮助程序实现。

myMockServer.stubFor(
       get(urlEqualTo(myEndPoint+ "?key=key3"))
       .willReturn(aResponse().withStatus(200)
       .withHeader("Content-Type", "application/json")
       .withBodyFile("response_{{request.query.key}}.json")

检查http://wiremock.org/docs/response-templating/.现有的各种型号

云何平
2023-03-14

到目前为止,无法在wiremock中参数化正文文件名。我有一个类似的要求,我需要根据请求URL返回文件。因此,我实施了如下变压器:

public class BodyFileNameResponseTransformer extends ResponseDefinitionTransformer {


public ResponseDefinition transform(Request request, ResponseDefinition rd,
    FileSource fileSource, Parameters parameters) {

    if (rd.getBodyFileName().startsWith("{{")) {
        return new ResponseDefinitionBuilder().**withBodyFile**(request.getUrl().substring(1))
            .withStatus(rd.getStatus())
            .withHeaders(rd.getHeaders())
            .withTransformers(
                rd.getTransformers().toArray(new String[rd.getTransformers().size()]))
            .build();
    }

    return rd;
}

public String getName() {
    return "BodyFileNameTransformer";
}

}

可以用request.queryParameter(key)代替request.getUrl(),形成任意文件路径。根据需要创建文件路径,并在返回ResponseDefinition时将其设置为bodyFile。

不要忘记使用--extensions:Extension类名开始wiremock

更多详细信息,请访问扩展电线

 类似资料:
  • 我正在尝试数据发送到远程AWS API。 数据应该是部分上的。 使用邮递员,我可以发送数据,一切都正常工作: 现在,为了使用,我正在执行以下操作: 请求成功,但没有数据更新!好像没有收到一样。 我无法访问远程API日志文件。 所以我的问题是,这是在Guzzle请求的主体部分发布数据的正确方法吗? 谢了。

  • 问题内容: 我有一个模块(db.py),它从不同的数据库类型(sqlite,mysql等)加载数据。该模块包含一个db_loader类和从其继承的子类(sqlite_loader,mysql_loader)。 使用的数据库类型在单独的params文件中, 用户如何找回正确的物体? 即我该怎么做: 我是在db.py模块中使用一种称为loader的方法,还是有一种更优雅的方式使类可以根据参数选择自己的

  • 以下文件是我试图向nodejs(Express)服务器提交POST请求的过程。req.body不会从我的表单中填充任何类型的数据。我已经做了很多搜索,发现许多解决这个特殊问题的方法包括在我的路线之前移动身体解析器,并确保在表单字段中包含名称。 应用程序。js 指数玉 指数js(从app.post('/signup',…)调用) 安慰日志

  • 因此,我试图使用wiremck向带有请求正文的URL发出后请求,然后使用我的respons.json文件返回响应。(自定义响应) 我就是这样设置的,但我似乎找不到任何关于如何设置带有请求主体的post存根(包含数据,比如说尝试创建ID),然后检索自定义响应主体(从json文件创建ID响应)的信息。我该怎么设置呢。我尝试通过json文件请求生成id,然后尝试检索创建的id。 WithBodyFile

  • 点击“添加文件”或“添加 URL”来添加导入源文件。然后,为源文件选择“编码”。 【注意】你可以同时导入多个文件。 ODBC 设置一个 ODBC 数据源连接 安装合适的 ODBC 管理员和文件相关的驱动程序。 在应用程序,选择“工具程式”->“ODBC 管理员”;或在 Navicat 中,在这个步骤点击“ODBC 管理员”按钮。 在“用户数据源名”选项卡点击“添加”按钮。 选择合适的 ODBC 驱

  • 我又有一个问题,关于在netbean中使用数据库程序。这是我的问题,我有一个包含男性和女性按钮的按钮组。当你点击“提交”按钮时,选中的按钮将把它的文本写入MySQL数据库。所以问题是,我不知道它的反面。 我将使我的问题尽可能清楚。我想从数据库中检索文本,并在按钮组的一个按钮中选择检索到的文本。 例如,我从数据库中检索了“男性”,所以我想要一个代码来选择“男性”单选按钮。谢谢。 编辑: 所以我现在明