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吧。

 

 

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

就是干。

发布了1320 篇原创文章 · 获赞 2523 · 访问量 341万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 猿与汪的秘密 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览