@GetMapping(value = "/result")
public int addition(
@ApiParam(value = "FirstValue", required = true, type = "string", defaultValue = "0") @RequestParam(value = "firstValue", required = true) Integer x,
@ApiParam(value = "SecondValue", required = true, type = "string", defaultValue = "0") @RequestParam(value = "secondValue", required = true) Integer y) {
return x + y;
}
在刷新 swagger UI 页面时,我们收到以下错误
2019-06-26 15:44:11.484 WARN 16667 --- [nio-7854-exec-3] i.s.m.p.AbstractSerializableParameter : Illegal DefaultValue 0 for parameter type integer
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_144]
at java.lang.Long.parseLong(Long.java:601) ~[na:1.8.0_144]
at java.lang.Long.valueOf(Long.java:803) ~[na:1.8.0_144]
at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
最佳答案
这不是错误,只是严重性警告的日志,可以通过使用忽略
logging.level.io.swagger.models.parameters.AbstractSerializableParameter=error
在 application.properties 上。根据我自己的经验,他不会为整数设置值 0(我认为这是因为这是 int 类型的默认值)。
关于显示为 ref 的类型,这是因为 integer 不是接受的值之一。对于 java.lang.Integer 或原始 int,您应该在 swagger 中使用类型“int”。我使用的其他值是:“long”(对于 java.lang.Long 和 long)、“bigInteger”(对于 java.math.BigInteger),当然还有“string”(对于 java.lang.String)。
关于swagger-2.0 - @ApiParam 类型不支持字符串以外的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770356/