专栏首页丑胖侠Spring Boot中使用Swagger2异常:Illegal DefaultValue 0 for parameter type integer

Spring Boot中使用Swagger2异常:Illegal DefaultValue 0 for parameter type integer

在Spring Boot中集成Swagger2,使用@ApiImplicitParam注解时出现如下异常“Illegal DefaultValue 0 for parameter type integer”,异常详情如下:

Illegal DefaultValue 0 for parameter type integer

java.lang.NumberFormatException: For input string: ""
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) ~[na:na]
	at java.base/java.lang.Long.parseLong(Long.java:709) ~[na:na]
	at java.base/java.lang.Long.valueOf(Long.java:1151) ~[na:na]
	at io.swagger.models.parameters.AbstractSerializableParameter.getExample(AbstractSerializableParameter.java:412) ~[swagger-models-1.5.20.jar:1.5.20]

相关源代码的写法如下:

/**
 * 删除用户
 */
@ApiImplicitParams({
		@ApiImplicitParam(name = "id",
				value = "用户ID",
				paramType = "path",
				required = true,
				dataType = "Long",
				defaultValue = "0"),
		@ApiImplicitParam(name = "remark", value = "备注")
})
@ApiOperation(value = "根据ID删除用户", tags = "删除")
@DeleteMapping("{id}")
public void delete(@PathVariable("id") Long id) {
	userService.delete(id);
}

当使用@ApiImplicitParam时,针对id字段,使用了required=true和defaultValue=“0”的配置,但并不能解决该异常。而且异常的描述具有迷糊性,说什么“DefaultValue”类型非法。

其实仔细看异常中AbstractSerializableParameter.getExample相关代码,应该是example处理时导致了异常。于是在上面的属性中添加了example = "0"的属性。异常成功解决。正确代码如下:

/**
 * 删除用户
 */
@ApiImplicitParams({
		@ApiImplicitParam(name = "id",
				value = "用户ID",
				paramType = "path",
				required = true,
				dataType = "Long",
				defaultValue = "0",
				example = "0"),
		@ApiImplicitParam(name = "remark", value = "备注")
})
@ApiOperation(value = "根据ID删除用户", tags = "删除")
@DeleteMapping("{id}")
public void delete(@PathVariable("id") Long id) {
	userService.delete(id);
}

其他情况异常

同样的,如果在实体类中,Integer类型的属性加@ApiModelProperty时,必须要给example参数赋值,且值必须为数字对应的字符串。否则也会出现相似异常。

如下示例中的ID字段:

@Data
@ApiModel(value = "用户实体类",description = "用户信息,用户接受、返回参数")
public class User {

	@ApiModelProperty(value = "用户ID", name = "id", example = "0")
	private Long id;

	@ApiModelProperty(value = "用户名",name = "username",example = "Tom")
	private String username;
} 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是RESTful风格的API设计?

    随着移动互联网的兴起,RESTful风格的API设计也随之流行起来,但我们说了那么多RESTful设计,它到底是什么?本篇文章带大家来了解一下它的真实面目。

    程序新视界
  • Intellij IDEA创建包(package)问题解决方案

    问题 在使用IDEA创建包时会出现这样一种场景,就是当一个空包很长时,比如com.secbro.drools.model。这个时候如果你想给drools或mod...

    程序新视界
  • Java8的Stream方法findAny空指针异常(NullPointerException)实例对比

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    程序新视界
  • SpirngBoot之整合Swagger2

    swagger,中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅, 而且还提供了在线文档的测试。另外swagger很...

    用户1195962
  • 最小二乘回归的Python实现

    写在前面 我们构建了非常强大的私募基金数据库,并基于这个数据库,衍生出了FOF Easy数据可视化终端和FOF Power组合基金管理系统,涉及到非常多复杂的...

    企鹅号小编
  • 一条执行时间两天半的sql语句简化(r4笔记第62天)

    周末刚过去,今天来到办公室做例行检查,就发现一条sql语句已经执行234841秒(65小时),已经两天多了。 查看了一下对应的Undo资源消耗,发现这个语句是最...

    jeanron100
  • 本地缓存性能之王Caffeine

    随着互联网的高速发展,市面上也出现了越来越多的网站和app。我们判断一个软件是否好用,用户体验就是一个重要的衡量标准。比如说我们经常用的微信,打开一个页面要十几...

    java金融
  • 本地缓存高性能之王Caffeine

    随着互联网的高速发展,市面上也出现了越来越多的网站和app。我们判断一个软件是否好用,用户体验就是一个重要的衡量标准。比如说我们经常用的微信,打开一个页面要十几...

    java金融
  • Appium移动端自动化测试--基础预热

    近日开始了移动端自动化测试的学习之路,决定在学习的过程中进行笔记,总结学习,印象或许会深刻一些。

    软测小生
  • 关于Python2与python3共存的

      py -2 -m pip(或pip2)和py -3 -m pip(或pip3)指定运行pip2和pip3。

    py3study

扫码关注云+社区

领取腾讯云代金券