当前位置:   article > 正文

swagger2 使用说明_apimodelproperty extensions

apimodelproperty extensions

swagger2 使用说明

 

作用:生成在线文档,并支持在线测试

 

 

*************************

导入 jar 包

 

  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-boot-starter</artifactId>
  4. <version>3.0.0</version>
  5. </dependency>

 

 

*************************

自动配置类

 

OpenApiAutoConfiguration

  1. @Configuration
  2. @EnableConfigurationProperties({SpringfoxConfigurationProperties.class})
  3. @ConditionalOnProperty(
  4. value = {"springfox.documentation.enabled"},
  5. havingValue = "true",
  6. matchIfMissing = true
  7. )
  8. @Import({OpenApiDocumentationConfiguration.class, SpringDataRestConfiguration.class, BeanValidatorPluginsConfiguration.class, Swagger2DocumentationConfiguration.class, SwaggerUiWebFluxConfiguration.class, SwaggerUiWebMvcConfiguration.class})
  9. @AutoConfigureAfter({WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class})
  10. public class OpenApiAutoConfiguration {
  11. public OpenApiAutoConfiguration() {
  12. }
  13. }

自动配置类导入:OpenApiDocumentationConfiguration、SpringDataRestConfiguration、

BeanValidatorPluginsConfiguration、Swagger2DocumentationConfiguration、

SwaggerUiWebFluxConfiguration、SwaggerUiWebMvcConfiguration

 

SpringfoxConfigurationProperties

  1. @ConfigurationProperties("springfox.documentation")
  2. public class SpringfoxConfigurationProperties {
  3. private boolean autoStartup = true;
  4. private boolean enabled = true;
  5. @NestedConfigurationProperty
  6. private SpringfoxConfigurationProperties.SwaggerConfigurationProperties swagger;
  7. @NestedConfigurationProperty
  8. private SpringfoxConfigurationProperties.OpenApiConfigurationProperties openApi;
  9. @NestedConfigurationProperty
  10. private SpringfoxConfigurationProperties.SwaggerUiConfigurationProperties swaggerUi;
  11. public SpringfoxConfigurationProperties() {
  12. }
  13. **************
  14. 内部类:SwaggerUiConfigurationProperties
  15. public static class SwaggerUiConfigurationProperties {
  16. private boolean enabled = true;
  17. private String baseUrl = ""; //swagger-ui访问根路径
  18. public SwaggerUiConfigurationProperties() {
  19. }
  20. **************
  21. 内部类:OpenApiConfigurationProperties
  22. public static class OpenApiConfigurationProperties {
  23. private boolean enabled = true;
  24. public OpenApiConfigurationProperties() {
  25. }
  26. **************
  27. 内部类:Swagger2Configuration
  28. public static class Swagger2Configuration {
  29. private boolean enabled = false;
  30. private boolean useModelV3 = true; //默认使用modelV3格式
  31. private String host;
  32. **************
  33. 内部类:SwaggerConfigurationProperties
  34. public static class SwaggerConfigurationProperties {
  35. @NestedConfigurationProperty
  36. private SpringfoxConfigurationProperties.Swagger2Configuration v2;
  37. public SwaggerConfigurationProperties() {
  38. }

 

 

SwaggerUiWebMvcConfiguration:swagger-ui 访问配置

  1. @Configuration
  2. @ConditionalOnWebApplication(
  3. type = Type.SERVLET
  4. )
  5. @ConditionalOnProperty(
  6. value = {"springfox.documentation.swagger-ui.enabled"},
  7. havingValue = "true",
  8. matchIfMissing = true
  9. )
  10. public class SwaggerUiWebMvcConfiguration {
  11. @Value("${springfox.documentation.swagger-ui.base-url:}")
  12. private String swaggerBaseUrl; //swagger-ui 访问根路径
  13. public SwaggerUiWebMvcConfiguration() {
  14. }
  15. @Bean
  16. public SwaggerUiWebMvcConfigurer swaggerUiConfigurer() {
  17. return new SwaggerUiWebMvcConfigurer(this.fixup(this.swaggerBaseUrl));
  18. } //创建 SwaggerUiWebMvcConigurer 实例
  19. private String fixup(String swaggerBaseUrl) {
  20. return StringUtils.trimTrailingCharacter(BuilderDefaults.nullToEmpty(swaggerBaseUrl), '/');
  21. }
  22. }

 

SwaggerUiWebMvcConfigurer

  1. public class SwaggerUiWebMvcConfigurer implements WebMvcConfigurer {
  2. private final String baseUrl;
  3. public SwaggerUiWebMvcConfigurer(String baseUrl) {
  4. this.baseUrl = baseUrl;
  5. }
  6. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  7. String baseUrl = StringUtils.trimTrailingCharacter(this.baseUrl, '/');
  8. registry.addResourceHandler(new String[]{baseUrl + "/swagger-ui/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/springfox-swagger-ui/"}).resourceChain(false);
  9. }
  10. public void addViewControllers(ViewControllerRegistry registry) {
  11. registry.addViewController(this.baseUrl + "/swagger-ui/").setViewName("forward:" + this.baseUrl + "/swagger-ui/index.html");
  12. } //this.baseUrl + "/swagger-ui/ ==> this.baseUrl + "/swagger-ui/index.html"
  13. }

说明:使用 localhost:8080/swagger-ui/localhost:8080/swagger-ui/index.html 可访问swagger-ui 界面

 

 

*************************

相关注解

 

*******************

pojo 注解

 

@ApiModel:对实体类进行说明

  1. @Target({ElementType.TYPE}) //标注在类上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Inherited
  4. public @interface ApiModel {
  5. String value() default ""; //对类的作用进行说明
  6. String description() default ""; //描述信息
  7. Class<?> parent() default Void.class;
  8. String discriminator() default "";
  9. Class<?>[] subTypes() default {};
  10. String reference() default "";
  11. }

 

@ApiModelProperty:对实体类的属性说明

  1. @Target({ElementType.METHOD, ElementType.FIELD}) //标注在方法、字段上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiModelProperty {
  4. String name() default ""; //字段名称
  5. String value() default ""; //字段说明
  6. String dataType() default ""; //字段类型,如:String、Integer
  7. boolean required() default false; //是否必须
  8. String allowableValues() default "";
  9. String access() default "";
  10. String notes() default "";
  11. String example() default "";
  12. String reference() default "";
  13. int position() default 0;
  14. boolean hidden() default false;
  15. boolean allowEmptyValue() default false;
  16. ApiModelProperty.AccessMode accessMode() default ApiModelProperty.AccessMode.AUTO;
  17. Extension[] extensions() default {@Extension(
  18. properties = {@ExtensionProperty(
  19. name = "",
  20. value = ""
  21. )}
  22. )};
  23. public static enum AccessMode {
  24. AUTO,
  25. READ_ONLY,
  26. READ_WRITE;
  27. private AccessMode() {
  28. }
  29. }
  30. }

 

*******************

controller 相关注解

 

@Api:对控制器进行说明

  1. @Target({ElementType.TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Inherited
  4. public @interface Api {
  5. String value() default ""; //类作用说明
  6. String[] tags() default {""}; //类说明,可有多个,如:tags={"des","des2"}
  7. String produces() default "";
  8. String consumes() default "";
  9. String protocols() default "";
  10. boolean hidden() default false;
  11. Authorization[] authorizations() default {@Authorization("")};
  12. }

 

@ApiOperation:对控制器的方法进行说明

  1. @Target({ElementType.METHOD, ElementType.TYPE}) //注解在类、方法上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiOperation {
  4. String value(); //方法说明
  5. String notes() default ""; //方法详细说明
  6. String[] tags() default {""}; //方法说明,可有多个
  7. Class<?> response() default Void.class;
  8. String responseContainer() default "";
  9. String responseReference() default "";
  10. String httpMethod() default "";
  11. String nickname() default "";
  12. String produces() default "";
  13. String consumes() default "";
  14. String protocols() default "";
  15. Authorization[] authorizations() default {@Authorization("")};
  16. boolean hidden() default false;
  17. ResponseHeader[] responseHeaders() default {@ResponseHeader(
  18. name = "",
  19. response = Void.class
  20. )};
  21. int code() default 200;
  22. Extension[] extensions() default {@Extension(
  23. properties = {@ExtensionProperty(
  24. name = "",
  25. value = ""
  26. )}
  27. )};
  28. boolean ignoreJsonView() default false;
  29. }

 

@ApiParam:对控制器方法参数进行说明

  1. @Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD}) //注解在参数、方法、字段上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiParam {
  4. String name() default ""; //参数名称
  5. String value() default ""; //参数说明
  6. String defaultValue() default ""; //参数默认值
  7. boolean required() default false; //参数是否必须
  8. String access() default "";
  9. String allowableValues() default "";
  10. boolean allowMultiple() default false;
  11. boolean hidden() default false;
  12. String example() default "";
  13. Example examples() default @Example({@ExampleProperty(
  14. mediaType = "",
  15. value = ""
  16. )});
  17. String type() default "";
  18. String format() default "";
  19. boolean allowEmptyValue() default false;
  20. boolean readOnly() default false;
  21. String collectionFormat() default "";
  22. }

 

@ApiImplicitParam:对控制器方法的参数进行说明

  1. @Target({ElementType.METHOD}) //标注在方法上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiImplicitParam {
  4. String name() default ""; //参数名称(方法体中参数名)
  5. String value() default ""; //参数说明(对参数进行描述)
  6. boolean required() default false; //参数是否必须
  7. String defaultValue() default ""; //参数的默认值
  8. String paramType() default ""; //参数请求类型,如:query(自定义,为查询参数)
  9. String dataType() default ""; //参数类型,如:string、Integer
  10. String access() default "";
  11. String allowableValues() default "";
  12. boolean allowMultiple() default false;
  13. Class<?> dataTypeClass() default Void.class;
  14. String example() default "";
  15. Example examples() default @Example({@ExampleProperty(
  16. mediaType = "",
  17. value = ""
  18. )});
  19. boolean allowEmptyValue() default false;
  20. boolean readOnly() default false;
  21. String type() default "";
  22. String format() default "";
  23. String collectionFormat() default "";
  24. }

 

@ApiImplicitParams:对控制器方法参数进行说明

  1. @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE, ElementType.TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiImplicitParams {
  4. ApiImplicitParam[] value(); //ApiImplicitParam数组,通常标注在控制器方法上对参数进行说明
  5. }

 

 

@ApiResponse:对控制器方法返回数据进行说明

  1. @Target({ElementType.METHOD}) //标注在方法上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiResponse {
  4. int code(); //响应码,如:403
  5. String message(); //响应码对应的说明信息
  6. Class<?> response() default Void.class;
  7. String reference() default "";
  8. ResponseHeader[] responseHeaders() default {@ResponseHeader(
  9. name = "",
  10. response = Void.class
  11. )};
  12. String responseContainer() default "";
  13. Example examples() default @Example({@ExampleProperty(
  14. value = "",
  15. mediaType = ""
  16. )});
  17. }

 

@ApiResponses:对控制器方法返回数据进行说明

  1. @Target({ElementType.METHOD, ElementType.TYPE}) //标注在方法、类上
  2. @Retention(RetentionPolicy.RUNTIME)
  3. public @interface ApiResponses {
  4. ApiResponse[] value(); //使用apiResponse数组对控制器参数返回数据进行说明
  5. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/373053
推荐阅读
相关标签
  

闽ICP备14008679号