java - Swagger 客户端问题:服务是否产生不一致的 JSON/XML 或者我做错了什么?
问题描述
我正在尝试使用使用 Swagger 的第三方 Web 服务,它声称可以生成 XML 和 JSON。
太好了,我希望我可以将swagger-codegen-maven-plugin指向swagger.json,转动手柄并生成客户端。
但是,当我使用生成的代码运行简单查询时,结果对象为空。当我启用调试时,我可以看到查询正在生成来自 Web 服务的响应,但它没有被映射到我的模型类中的列表中。
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 的有限理解,我相信这是“未包装的”,但是,我希望数据数组在 JSON 版本中被称为“渲染”——这似乎是代码生成模型类中的名称(例如,使用okhttp-gson 客户端“渲染”在 @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 版本?
这是一个五花八门的网络服务,如果可以避免的话,我宁愿不手工制作客户端。
解决方案
我已经联系了供应商,他们同意问题出在他们的网络服务上。
推荐阅读
- javascript - 克隆功能不适用于 JavaScript
- java - JavaFX as MavenDependency - jar 在 Oracle JDK 上启动,但不在 openJDK 上
- assembly - 在 MARIE 汇编中,为什么 MAR 有时包含 PC-1(如 PC 减 1 的内容),但不是一直?
- javascript - 在 Wordpress 中自定义猫头鹰轮播
- google-cloud-platform - 我有一个 gcp 存储桶,里面有 1000 多张图片。获取列出存储桶中对象的所有 URL 的文本文件的最简单方法是什么?
- node.js - 如何获取连接到 websocket 服务器的所有客户端的“真实”IP 地址
- macros - 如何评估 nim 中的表达式?
- android - 当您的手机使用自定义字体系列时,如何为应用设置字体系列?
- sql - 根据 PostgreSQL 中的频率获取日期的单词排名
- java - 启动 Inteliji IDEA 会出错。我该如何解决?