Wiremock Захватить параметр пути и вернуть в тело ответа - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь создать динамические макеты с помощью WireMock. У меня есть ситуация, когда, если я укажу URL, например:

http://localhost:8089/api/account/abc@abc.com

тогда я должен получить ответ вроде:

{ 
  "account" : "abc@abc.com" 
}

Вкратце, параметр пути возвращается в теле ответа. Я могу сделать URL-адрес запроса универсальным, используя urlPathPattern, установленный на /api/account/([a-z]*), однако я не уверен, как мне перехватить abc@abc.com и вернуть его в ответе с помощью регулярных выражений.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

То же самое можно сделать, используя WireMock.Net - Шаблон ответов

Правило выглядит так:

{
    "Request": {
        "Path": {
            "Matchers": [
                {
                    "Name": "RegexMatcher",
                    "Pattern": "^/api/account/([a-z]*@[a-z]*.[a-z]*)$"
                }
            ]
        },
        "Methods": [
            "get"
        ]
    },
    "Response": {
        "StatusCode": 200,
        "BodyAsJson": {
            "account": "{{request.PathSegments.[2]}}"
        },
        "UseTransformer": true,
        "Headers": {
            "Content-Type": "application/json"
        }
    }
}
0 голосов
/ 18 ноября 2018

В WireMock регулярные выражения могут использоваться для распознавания формата электронной почты в Соответствие запроса .Для целей этого примера я использовал очень грубый пример.Ваша производственная реализация может потребовать более надежного подхода.

Этот запрос:

http://localhost:8181/api/account/someone@somewhere.net

Соответствует этому правилу:

{
    "request": {
        "method": "GET",
        "urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
    },
    "response": {
        "status": 200,
        "jsonBody": {
            "account": "{{request.path.[2]}}"
        },
        "transformers": ["response-template"],
        "headers": {
            "Content-Type": "application/json"
        }
    }
}

И возвращает этот ответ:

{
  "account": "someone@somewhere.net"
}

Используется шаблон ответа , обрабатывающий в WireMock. Переменные модели запроса [{{request.path.[2]}}] можно использовать для получения разделов из запроса.

...