我正在尝试使用Swagger来记录基于Spring-MVC的REST-API,并且在使用Swagger来反映自定义序列化器和反序列化器的使用时遇到了问题 .
因为JSON必须符合已 Build 的格式(设计不是特别好),并且我希望在Java类中有一个设计合理的API模型,所以我使用了一些JsonSerializer的自定义实现来生成JSON输出 . 当我在Spring-MVC控制器中启用带有注释的Swagger时,生成的文档会忽略自定义序列化程序,并将模型描述为使用默认的Jackson设置进行序列化 . 到目前为止一切顺利,我并没有真正期望Swagger能够自动理解序列化器的实现 .
我可以期待的(我在Swagger文档中找不到任何相关内容)是一种在模型类中的相关属性上使用Swagger注释来手动描述模型的方法 . 我是否遗漏了某些内容,或者将Swagger作为与自定义序列化程序(或反序列化程序)相关的文档工具实际上是不可能的?
编辑:Swagger文档不是特别好,但我已经尝试在偏离属性上使用@ApiModelProperty . 据我所知,它对生成的输出完全没有影响(使用Swagger-SpringMVC 0.8.5和0.9.5进行测试) .
1 回答
您可以使用模型替代品,例如假设您有服务
您可以设置一个类型替换规则,告诉springmvc如何在swagger ui中表示自定义可序列化类型 .
不幸的是,这将创建一个在运行时不使用的并行类型 .
Update: 如果我理解你的评论,你可能正在寻找的是使用模型替代品(参见上面的例子) .
替换
Date
与String
(这是prescriptive guidance)在日期的情况下,您唯一的选择是通过特定字段或属性的文本描述来传达预期的格式 .使用您可以创建的枚举替换
Boolean
,即YesNoEnum
,表示您希望序列化对象的方式 . 这将为文档提供一组允许的值 .在一天结束时,在创建这些元类只是为了文档与标准化API模型以尽可能多地使用序列化原语之间进行权衡 .