昌江黎族自治县网站建设_网站建设公司_Tailwind CSS_seo优化
2025/12/25 22:45:22 网站建设 项目流程

swagger 接口参数字段错误

后端的接口需要使用@Vaild注解进行入参的校验,通常可以在实体类Entity的字段上加上校验注解,例如@Blank校验字段不能为空。如果多个接口都需要使用校验的话,可以用分组校验功能,但是如果接口变多的话,实体类字段上就会显得特别乱。

我的做法是每个Controller对应一个Request类,每个接口入参使用Request的静态内部类,集成实体类,并重写需要校验的get方法。Entity、Request类示例如下
Entity

@EqualsAndHashCode(callSuper=true)@DatapublicclassProcessingParameterextendsBaseEntity<ProcessingParameter>{privateStringparamCode;privateStringparamName;privateStringspec;privateStringproduct;privateStringprocess;privateStringpath;privateStringunit;}
publicclassProcessingParameterRequest{publicstaticclassInsertRequestextendsProcessingParameter{@NotBlank@OverridepublicStringgetParamCode(){returnsuper.getParamCode();}@NotBlank@OverridepublicStringgetParamName(){returnsuper.getParamName();}@NotBlank@OverridepublicStringgetSpec(){returnsuper.getSpec();}// ...}publicstaticclassUpdateRequestextendsProcessingParameter{@NotBlank@OverridepublicStringgetId(){returnsuper.getId();}@Null(message="不允许修改参数的单位")@OverridepublicStringgetUnit(){returnsuper.getUnit();}@Null(message="不允许修改Code")@OverridepublicStringgetParamCode(){returnsuper.getParamCode();}}}

但是在swagger中,接口的参数,和实际的根本不对应,网上查询的都说是springfox对重写get支持不好,升级到springdoc以及其他方法,都试了还是解决不了问题。

后来我发现,swagger页面链接到的/v2/api-docs中,发现同名InsertRequest的引用有很多处,这时我才发现,或许是因为类同名了,所以swagger接口文档参数生成的有问题,实际上可能所有的使用了XXXX.InsertRequest 的接口都会遇到这个情况,虽然内部类所在的类是不一样的,但是都叫做InsertRequest。

于是我给每个Request类中的每个静态内部类都加上了注解,并且注解中的value名都各不相同

@ApiModel(value="ProcessingParameterRequest.InsertRequest",description="新增-参数")

于是问题就解决了

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询