SoapUI REST + JSON Mock Service: как я могу вернуть данные из запроса в ответ? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть фиктивная служба SoapUI REST (т. Е. Не SOAP), которая возвращает ответ на запрос POST.И запрос, и ответ содержат содержимое JSON.

В настоящий момент я могу получить его, чтобы он возвращал статический ответ, и он работает нормально, но я хочу, чтобы некоторые значения в ответе были динамически получены из запроса..

Итак, если у меня есть этот запрос:

 {
   "the_request":{
     "abc":"123",
 }

Как я могу получить "abc" в ответе?

Расследование заставило меня поверить, что я могу сделатьэто путем включения в ответ переменной, что-то вроде:

Response:

 {
   "the_response":{
     "value_from_request":"${#MockResponse#Request#the_request#abc}",
     "other":"stuff",
 }

А затем реализация сценария для заполнения переменной в ответе через вкладку «Сценарий».Как я могу затем заполнить это данными из запроса?

В настоящее время SoapUI просто генерирует пустое значение "value_from_request":"",

Пробовал с использованием mockRequest.requestContent на вкладке Сценарий, но не нашел, какполучить из него значение "123".

1 Ответ

0 голосов
/ 24 октября 2018

ОК, все получилось после небольшого количества экспериментов и объединения нескольких вещей.Помещение ответа, чтобы помочь любому, кто пытается что-то подобное.

Таким образом, ответное сообщение может просто ссылаться на переменную в requestContext следующим образом:

Ответ:

 {
   "the_response":{
     "value_from_request":"${the_value}",
     "other":"stuff",
 }

ИGroovy-скрипт может быть использован для анализа содержимого запроса JSON и заполнения «the_value» или чего-либо еще в requestContext:

// Parse the JSON request.
def requestBody = new groovy.json.JsonSlurper().parseText(mockRequest.getRequestContent())

// Set up "the_value" from the request message.
requestContext.the_value = requestBody.the_request.abc

// Bit of logging so can see this in the "script log" tab.
log.info "Value extracted from request: ${requestContext.the_value}"
...