首页 > 编程知识 正文

@apimodelproperty注解属性改为true之后

时间:2023-05-03 17:24:49 阅读:200999 作者:1301

@ApiModelProperty注解的required属性改为true之后,swagger页面一直显示false

参考网址:

https://gitee.com/xiaoym/knife4j/issues/ILNDH

具体原因是底层json序列化的问题,改起来就很麻烦

https://gitee.com/xiaoym/swagger-bootstrap-ui-demo/tree/master

具体参考knife4j-lower-spring-boot-demo这个项目

具体解释

因为在swagger的响应json中,针对@Requestbody这一类型的注解,实体属性只用@ApiModelProperty时,基础的类io.swagger.models.properties.property接口中,getRequired()方法加上了dtdcdq的@JsonIgnore注解,也就是说出来的属性字段,required字段是忽略的。swagger响应json使用的是dtdcdq

一种办法是将swagger-models的jar包中把@JsonIgnore注解去掉,但这并非长久之计

问题在线

最近项目使用swagger+knife4j作为在线接口文档

但是使用@RequestBody传json时候,实体类属性上@ApiModelProperty注解的Required属性失效

解决方案

直接使用knife4j,写个配置类,更加轻量级

具体参考https://gitee.com/xiaoym/swagger-bootstrap-ui-demo/tree/master的knife4j-lower-spring-boot-demo项目

步骤 1.去除项目中原有的swagger和knife4j依赖配置 2.添加低版本的knife4j依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.4</version></dependency> 3.写knife4j配置类 import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springfox.documentation.builders.PathSelectors;import springfox.documentation.builders.RequestHandlerSelectors;import springfox.documentation.service.*;import springfox.documentation.spi.DocumentationType;import springfox.documentation.spring.web.plugins.Docket;import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration@EnableSwagger2public class SwaggerConfiguration { @Bean(value = "defaultApi2") public Docket defaultApi2() { Docket docket=new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("低版本版本") .select() .apis(RequestHandlerSelectors.basePackage("xxx.**.controller")) //.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); return docket; } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("swagger-bootstrap-ui-demo RESTful APIs") .description("# swagger-bootstrap-ui-demo RESTful APIs") .termsOfServiceUrl("http://www.xx.com/") .contact("xx@qq.com") .version("1.0") .build(); }} 4.配置在线文档的包路径,在knife4j配置类里面进行配置 .apis(RequestHandlerSelectors.basePackage("xxx.**.controller")) ---->指定controller的包路径

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。