Проблема клиента Swagger: сервис производит несовместимый JSON / XML или я делаю что-то не так? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь использовать сторонний веб-сервис, использующий Swagger, который предназначен для создания XML и JSON.

Отлично, я надеюсь, что смогу просто указать swagger-codegen-maven-plugin на swagger.json , повернуть ручку и произвести клиента.

Однако, когда я запускаю простой запрос со сгенерированным кодом, полученный объект становится пустым. Когда я включаю отладку, я вижу, что запрос генерирует ответ от веб-службы, но он не отображается в списке внутри моего класса модели.

Документация swagger показывает, как запустить его в режимах JSON и XML.

XML выглядит так:

curl -X GET --header 'Accept: application/xml' 'https://blah/renderings'

(безопасность опущена) который производит что-то вроде:

<renderings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="blahschema.xsd">
  <rendering>standard</rendering>
</renderings>

JSON выглядит так:

curl -X GET --header 'Accept: application/json' 'https://blah/renderings'

, который производит что-то вроде:

{
  "rendering": [
    "standard",
  ]
}

Вышеприведенное выглядит для меня неправильно? С моим ограниченным пониманием JSON я считаю, что это "развернуто", однако я ожидал, что массив данных будет называться " renderings " в версия JSON - в любом случае это имя внутри класса модели, сгенерированного кодом (например, в клиенте okhttp-gson "renderings" указывается в аннотации @SerializedName).

Насколько я могу судить, ниже приведена соответствующая часть swagger.json.

"WSRenderingsList" : {
  "type" : "object",
  "properties" : {
    "renderings" : {
      "type" : "array",
      "xml" : {
        "name" : "rendering"
      },
      "items" : {
        "type" : "string",
        "xml" : {
          "name" : "rendering"
        }
      }
    }
  },
  "xml" : {
    "name" : "renderings"
  }
},

Я что-то не так делаю или служба выдаёт противоречивые результаты?

В качестве альтернативы, как я могу указать при генерации кода Swagger, что я хочу получить доступ к данным XML в предпочтении к версии JSON?

Это разнообразный веб-сервис, я бы предпочел , а не вручную, если я смогу избежать этого.

1 Ответ

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

Я связался с поставщиком, и они согласились, что проблема связана с их веб-сервисом.

...