一、问题
-
以crm开发定制单字母开头的属性crm开发定制作为接口入参时,在文档中变成两个“相似”的属性;
-
作为响应实体时,大小写不敏感。
查资料发现问题是的,接口入参定义:
- @ApiModel("测试")
- data class TestSwaggerParam(
- @ApiModelProperty(value = "云编号")
- val vCid:String
- )
显示:
- // requestBody
- {
- "vCid": "",
- "vcid": ""
- }
-
- // responseBody
- {
- "vcid": ""
- }
二、原因
类属性get set的时候属性名都会转为大写。如果你的属性是大写的,它的set get 方法也是setA.. getB.. ,程序会自动默认你传过来的属性是小写的name;
spring默认的命名方式,首字母转小写,连续大写字母都转成小写。
对于本文中的情况来说:
-
vCid的getter方法为getVCid
-
连续大小写字母转为小写后,swagger无法辨别实际参数名字是vcid还是vCid
-
最终入参为了容错(猜测)提供两个属性,而响应结果大小写不敏感并不会严重影响实际使用
三、解决
规范属性命名,放弃简称,将单字母补全。
应该还有其他的解决方法让swagger能够在这种特殊情况下正确识别实际的属性,欢迎补充。
引用: