java Swagger不够聪明,无法处理匿名类型(如地图)
我正在使用enunciate为REST API生成Swagger文档。我的一个遗留bean包含一个地图,而斯威格对此抱怨:
[INFO] --- maven-enunciate-plugin:1.27:docs (default) @ foo-api ---
[INFO] initializing enunciate.
[INFO] invoking enunciate:generate step...
[WARNING] Validation result has errors.
/.../rest/BarBean.java:170: [swagger] Swagger isn't smart enough to handle anonymous types (such as maps).
public HashMap<String, BazBean> getBazBeans() {
是否有任何注释可以放入bean类中,以便Swagger能够处理这个问题
除此之外,有没有办法让斯威格忽略场地或整个班级?我知道Swagger忽略了没有@XmlRootElement
注释的类,但是BazBean
不幸地被用于另一个接受XML的端点
# 1 楼答案
我可以想出两种方法来解决这个问题:
BarBean
从您的DenuclateMaven配置中排除BarBean#getBazBeans()
方法添加@XmlJavaTypeAdapter
注释我将更详细地描述第二种解决方案,因为第一种是众所周知的。
getBazBeans()
的返回类型是匿名类型,这意味着它没有在项目中声明。您可以使用javax.xml.bind.annotation.adapters.XmlAdapter
来更改它,通过javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
注释将其连接到getBazBeans()
方法返回类型