Swagger學習筆記

狂神聲明 : 文章均爲本身的學習筆記 , 轉載必定註明出處 ; 編輯不易 , 防君子不防小人~共勉 ! php

Swagger學習筆記

課程目標html

  • 瞭解Swagger的概念及做用
  • 掌握在項目中集成Swagger自動生成API文檔

Swagger簡介

先後端分離  (先後端相對獨立且鬆耦合)前端

  • 前端-->前端控制層 , 視圖層
  • 前端和後端利用API接口進行相應協做(數據多是json也多是xml等等的...)
  • 後端-->後端控制層 , 服務層 , 數據訪問層

問題 ?java

  • 先後端集成------CI/CD
    • 前端或後端沒法作到 "及時協商 , 儘早解決" 最終致使問題集中爆發 .

解決方案nginx

  • 首先定義schema , 並實時跟蹤最新的API , 下降集成風險 .

Swaggerweb

  • Restful API文檔在線自動生成器-->API文檔與API定義同步更新
  • 直接運行 , 在線測試API
  • 支持多種語言 (如 : java , php 等等)
  • 官網 : https://swagger.io/

Spring集成Swagger -->springfoxspring

  • springfox-swagger2
  • swagger-springmvc

項目中集成Swagger

項目環境 : JDK1.8 , Spring4.1.7 , Mybatis3.2.2json

Spring MVC 集成springfox-swagger2構建Restful API後端

  • Maven依賴
    • springfox-swagger2
    • springfox-swagger-ui
    • guava
    • mapstruct-jdk8
    • jackson
      • jackson-core
      • jackson-databind
      • jackson-annotations

集成配置步驟api

  1. 在pom.xml文件中添加Swagger2相關的依賴
  2. Swagger2配置類 : SwaggerConfig . java (官網下載)
    • @ComponentScan : 設置Swagger 掃描包
    • @EnableSwagger2 : 使Swagger2生效
    • @Configuration : 自動在本類上下文加載一些環境變量信息
      package dcc.core;
       
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.web.servlet.config.annotation.EnableWebMvc;
       
      import springfox.documentation.builders.ApiInfoBuilder;
      import springfox.documentation.builders.RequestHandlerSelectors;
      import springfox.documentation.service.ApiInfo;
      import springfox.documentation.spi.DocumentationType;
      import springfox.documentation.spring.web.plugins.Docket;
      import springfox.documentation.swagger2.annotations.EnableSwagger2;
       
      @Configuration //聲明該類爲配置類
      @EnableSwagger2 //聲明啓動Swagger2
      @EnableWebMvc //聲明啓動mvc
      public class SwaggerConfig{
          @Bean
          public Docket customDocket() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .apiInfo(apiInfo())
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("dcc"))//掃描的包路徑
                      .build();
          }
       
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .title("DCC API接口")//文檔說明
                      .version("1.0.0")//文檔版本說明
                      .build();
          }
      }
  3. Spring MVC配置文件
    <!-- 激活@controller模式 -->
    <mvc:annotation-driven />
     
    <!-- 開啓靜態文件 默認攔截器 -->
    <mvc:default-servlet-handler/>
    
    添加指定掃描 : < context:component-scan />

具體運用

API加入Swagger

  • 經過在API上添加註解實現 , API文檔的同步效果
  • @Api --> ( 表名可供Swagger展現的接口類 : 用在類上面 )
  • @ApiOperation --> ( 描述API方法 : 用在方法上面 )
  • @ApiParam --> ( 單個參數描述 )
  • @ApiModel --> ( 用對象接收參數 : 用在類上面 )
  • @ApiModelProperty --> ( 用對象接收參數時 , 描述對象的一個字段 ; 用在屬性上面 )

Nginx配置

  • 訪問Swagger界面
    • http://IP:port /{context-path}/swagger-ui.html
  • 問題
    • 生成環境下 , 只開放80端口 , 經過Tomcat沒法訪問Swagger
  • 解決方案
    • 經過 Nginx 進行Swagger 的訪問 (nginx.conf)
      • 註釋掉 server節點下的 root . 即前端靜態工程
      • 註釋掉 location 這個節點
    • http://IP/{context-path}/swagger-ui.html
相關文章
相關標籤/搜索