Я пытаюсь использовать сторонний веб-сервис, использующий 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?
Это разнообразный веб-сервис, я бы предпочел , а не вручную, если я смогу избежать этого.