【问题标题】:multiple accept values in request for wiremock请求wiremock的多个接受值
【发布时间】:2020-06-30 12:22:03
【问题描述】:

我正在尝试为我的 api 编写一个模拟。

为了正确测试它,我需要一个允许 application/json 和 / 被接受的请求。 哪个可以像这样在 HTML 中工作

application/json, */*

当我在我的 wiremock 映射 json 文件中使用它时,我收到错误,或者有微小的更改只是“不匹配”响应。

我的 Json 是这样构建的

"request": {
    "urlPathPattern": "/publish",
    "method": "POST",
    "headers": {
        "Accept": {
            "contains": "application/json, */*"
        }
    },
    "bodyPatterns": []
}

我找不到任何解决方案,无论是在 wiremock 文档上还是在 google 的帮助下,但也许我对问题的描述只是没有显示我需要的结果。

有人能告诉我吗? 致以最诚挚的问候

【问题讨论】:

    标签: json http-headers wiremock


    【解决方案1】:

    据我了解,您需要同时接受 application/json*/* 作为 Accept 标头值。我假设您收到与*/* 匹配的内容的情况会将这些* 解释为通配符,因此some/type 将匹配。在这种情况下,您只需确保 Accept 标头具有某个值

    如果是这种情况,我建议您使用matches 对标头进行正则表达式匹配。

    "request": {
        "urlPathPattern": "/publish",
        "method": "POST",
        "headers": {
            "Accept": {
                "matches": ".*\/.*"
            }
        },
        "bodyPatterns": []
    }
    

    如果您需要完全匹配 application/json*/*,则需要执行类似...

    "request": {
        "urlPathPattern": "/publish",
        "method": "POST",
        "headers": {
            "Accept": {
                "matches": "(application\/json|\*\/\*)"
            }
        },
        "bodyPatterns": []
    }
    

    【讨论】:

    • 第 2 版是我们想要实现的。但是正则表达式不起作用。 Wiremock 仍然告诉“标题不匹配”版本 1 有效,
    • 传入的确切标题是什么?来自 WireMock 的确切错误消息是什么? WireMock 中是否有最接近的匹配结果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多