Swagger,Long类型却显示成Integer?

一个简单的Swagger前前后后遇到了N多问题。

最近又遇到2个。

第1个:Swagger2异常:java.lang.NumberFormatException:For input string:""

参考网上答案,解决了,原样照搬的。

https://fansunion.blog.csdn.net/article/details/100131321

 

第2个:

Swagger,

参数明明配置的是Long类型,

界面显示成Integer。

     @ApiImplicitParam(required = true, name = "referralId", value = "内推人的ID", dataType = "long"),

 

参考了网上dataType的描述和源码中的描述,“

The data type of the parameter.

This can be the class name or a primitive.

但是界面如图:

 

经过种种尝试,确认自己写法没错,确认程序没大问题。

想到,可能需要用“原生”的,看看效果。

 

项目中用了第三方UI swagger-bootstrap-ui。

想到会不会是 别人的bug,就像第1个问题 属于 官方的bug一样。

不能总怀疑自己,还得大胆怀疑别人。是人,就会有bug的。

 

 

原生界面,效果就很明显了。

integer和long,类型都显示为 integer。

但是,有个括号 int32和int64。

 

猜测,后端integer和long对前端来说,都是一样的 整型,位数不同。

long属于Java中的叫法,swager为了通熟易懂,用编程里面最基础的 int,int32和int64来解释吧。

 

最后一个奇怪的问题:

@ApiImplicitParam(required = true, name = "referralId", value = "内推人的ID", dataType = "Long"),
@ApiImplicitParam(required = true, name = "channelId", value = "简历来源渠道id(1,拉钩;2,BOSS;3,智联;4,前途无忧;5,内推;6,Offer审批", dataType = "Integer")

 

 

dataType = "Integer",界面显示类型为“ref”引用类型,似乎判断有问题额。

用“int”就没问题。

 

那为啥用“Long”就能正确显示为integer,int64呢?

好奇怪啊。

 

难道是源代码中那个特殊判断,如果是Long,返回Integer

f(BaseIntegerProperty.TYPE.equals(type)){

 

    return Long.valueOf(example);

 

}

 

就是说如果实体属性类型是Integer,就把example转为Long类型,而example默认为"",导致转换错误。

感觉没关系。没有对Long进行特殊判断。

先这样,用原生类型 int,long吧。

 

 

日拱一卒,先解决技术问题,再解决商业问题。

就是干。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值