如何根据配置文件配置WireMock代理请求

问题描述 投票:0回答:1

请问 WireMock 大师可以帮忙吗?我想配置 WireMock 来根据配置文件或某些变量代理转发请求(作为查询参数/正文值匹配之上的附加条件)。

配置文件将是简单的 json 文件(或类似的文件):

[
    {
        "key" : "proxyForwardRequest",
        "value" : "yes"
    }
]

规则 json 文件如下所示:

{
    "mappings": [
        {
            "priority": 1,
            "request": {
                "method": "ANY",
                "urlPathPattern": "/.*",
                "bodyPatterns": [
                    {
                        "matchesJsonPath": {
                            "expression": "$.criteria.code",
                            "matches": "ABC"
                        }
                    }
                ]
            },
            "configFile": [
                {
                   "fileName": "config.json",
                   "matchesJsonPath": {
                            "expression": "$.proxyForwardRequest",
                            "matches": "yes"
                        }
                }
            ],
            "response": {
                "proxyBaseUrl": "https://destinationURL.com"
            }
        }]
}

请问这样的事情可能吗?也许有人已经尝试过并拥有 json 配置/自定义代码。我尝试在 WireMock 文档中搜索,但无法找到简单的解决方案。由于 WireMock 是开源的,是否可以对其进行自定义?谢谢你

java proxy config wiremock
1个回答
0
投票

我进行了更多搜索,发现状态行为函数可能是解决我的问题的一个选项,这是真的,我对这种方法很满意:

    {
    "mappings": [
        {
            "scenarioName": "ForwardTo",
            "requiredScenarioState": "DestinationURL",
            "priority": 1,
            "request": {
                "method": "ANY",
                "urlPathPattern": "/.*"
            },
            "response": {
                "proxyBaseUrl": "https://destinationURL.com"
            }
        },
        {
            "scenarioName": "ForwardTo",
            "requiredScenarioState": "Mock",
            "priority": 1,
            "request": {
                "method": "ANY",
                "urlPathPattern": "/.*"
            },
            "response": {
                "proxyBaseUrl": "https://mockURL.com"
            }
        }
    ]
}

WireMock启动后的默认场景状态为STARTED。您需要使用以下方法更改场景状态以激活正确的行为:

    PUT /__admin/scenarios/my_scenario/state
{
    "state": "state_2"
}

更多详细信息可以在这里找到:https://wiremock.org/docs/stateful-behaviour/

© www.soinside.com 2019 - 2024. All rights reserved.