swagger的@ApiModelProperty失效
若是急着找解决方案,请跳致分割线下
2022年11月3日上午,我正在工位上喝着咖啡看着窗外的风景,细数来往的车辆,盘算着今天的工作。正当我喝完最后一口咖啡的时候,一阵急促的脚步声传入了我的耳朵,我缓缓转过视线,目光还未落到前来的身影,便闻到了一律芳香。是她。“在忙吗?”她轻声道,我笑着点了点头,因为我知道如果我说不忙,那便有得忙了。她玉手将垂在脸庞的青丝勾至耳后,不紧不急的说道“你昨天写的接口有点小问题”。
我某头一皱,熔岩巨兽(不是)“哦?”
看到我如此反应,她便俯身将问题情况的报告放在了我的桌上,那紧身的连衣裙勾勒出的曲线,让我想入非非。
我拿起报告定睛一看:swagger的部分参数无备注。看完我嘴角不禁上扬,这妮子就是想通过这种方式跟我说话罢了,不由得心中一喜,摇了摇头。因为我十分肯定所有参数都打上了@ApiModelProperty的注解,别问为什么,因为我是直接mybatis生成的实体,如果没有备注,那便是数据库本身就无备注。
一阵操作过后,我发现,swagger的页面有些参数确真没有备注,思索片刻过后。我发现了问题的关键:
该实体我是直接生成的,数据库不是我设计的,所以生成的实体变量名是不规范的。而网上大多所说修改首字母为小写,改成驼峰,也只是片面之言。
-------------------------------------超级华丽的分割线-----------------------------------
产生这个现象的原因是:swagger页面的参数的属性名与实体的属性名没有对应上。例如:
那解决方案便清晰了起来,将实体的属性名改成一致的不就解决了吗?可是这个方案在我手指接触键盘的一瞬间,便被我脑海中的另一个声音否决了“你有没有想过,这个实体修改了,你得去把数据库的映射一起改了,小子,你只能如此了吗?”
“哼,那我修改swagger和实体的映射不就成了吗?”
解决方案:
1、修改实体属性名与swagger映射保持一直,不过却是大工程,因为得去顺便把持久层的映射改了,一般来说,实力在大斗师级别的勇士会采取此等方法。
2、用@JsonProperty注解,让这些属性在序列化的时候与swagger的映射保持一致。
在她的注视下,我飞快的在键盘上操作,几息过后便是解决了。将背靠在椅子上,缓缓说道“希望下次,你找我能是其他事”,她好像有些吃惊,那双宛如黑宝石般的双眸,在一束阳光的照射下微微,闪烁着一丝惊讶“可是你不是有女朋友吗?”
----------未完待续,等下次踩坑日记的时候补吧。