springboot集成swagger

?????個人認為swagger主要作用在于前后端分離項目服務端接口信息界面化,有助于接口的聯(lián)調,當然也可以用于服務端接口測試(在header中加參數(shù)等等需要在Java端配置,比較麻煩,還不如直接使用postman),功能還是相當強大的。


1.首先引入swagger依賴

  <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
  </dependency>
  <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
  </dependency>

2.配置啟動類的編寫


swaggerConfig

具體代碼如下

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

這是相當簡潔的配置了,自動掃面所有的接口信息,@Configuration注解表明他是一個配置類,@EnableSwagger2開啟swagger2。
3.解釋接口信息的一些注解

  • @Api:修飾整個類,描述Controller的作用
  • @ApiOperation:描述一個類的一個方法,或者說一個接口
  • @ApiParam:單個參數(shù)描述
  • @ApiModel:用對象來接收參數(shù)
  • @ApiProperty:用對象接收參數(shù)時,描述對象的一個字段
  • @ApiResponse:HTTP響應其中1個描述
  • @ApiResponses:HTTP響應整體描述
  • @ApiIgnore:使用該注解忽略這個API
  • @ApiError :發(fā)生錯誤返回的信息
  • @ApiParamImplicitL:一個請求參數(shù)
  • @ApiParamsImplicit 多個請求參數(shù)
    注:這里引用文章SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,構建優(yōu)雅的Restful API所寫。

3.攔截器下的swagger配置與使用
攔截器配置的攔截路徑包含了swagger的路徑,這樣會導致swagger-ui頁面沒用接口信息顯示,所以就需要在攔截器配置"忽略路徑",配置如下。

  @Component
    class WebMvcConfigurer extends WebMvcConfigurerAdapter {
        //增加攔截器
        public void addInterceptors(InterceptorRegistry registry){
            if(swaggerShow){
                registry.addInterceptor(new MyInterceptor())    //指定攔截器類
                        .addPathPatterns("/**") //指定該類攔截的url
                        .excludePathPatterns("/swagger-resources/**"); //指定不攔截url(swagger)
            }else {
                registry.addInterceptor(new MyInterceptor())    //指定攔截器類
                        .addPathPatterns("/**"); //指定該類攔截的url
            }
        }
    }

上述的swaggerShow字段為配置在yml配置文件中是否開啟swagger(一般在生產(chǎn)環(huán)境就關閉swagger,開發(fā)環(huán)境打開用于調式與接口的對接工作)

 @Value("${swagger.show}")
 private boolean swaggerShow;
swagger:
  show: true
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容