springboot集成swagger2詳解

springboot swagger2 使用

依賴

<!--swagger2-->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>

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

springboot配置

package chang.config;


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.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class ChangSwagger2Config {
    /**
     * 通過 createRestApi函數來構建一個DocketBean
     * 函數名,可以隨意命名,喜歡什麼命名就什麼命名
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())//調用apiInfo方法,創建一個ApiInfo實例,裏面是展示在文檔頁面信息內容
                .select()
                //控制暴露出去的路徑下的實例
                //如果某個接口不想暴露,可以使用以下註解
                //@ApiIgnore 這樣,該接口就不會暴露在 swagger2 的頁面下
                .apis(RequestHandlerSelectors.basePackage("chang.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    //構建 api文檔的詳細信息函數
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //頁面標題
                .title("Spring Boot Swagger2 構建RESTful API")
                //條款地址
                .termsOfServiceUrl("http://despairyoke.github.io/")
                .contact("zwd")
                .version("1.0")
                //描述
                .description("API 描述")
                .build();
    }
}

註解解釋

@Api:用在請求的類上,表示對類的說明
    tags="說明該類的作用,可以在UI界面上看到的註解"
    value="該參數沒什麼意義,在UI界面上也看到,所以不需要配置"

@ApiOperation:用在請求的方法上,說明方法的用途、作用
    value="說明方法的用途、作用"
    notes="方法的備註說明"

@ApiImplicitParams:用在請求的方法上,表示一組參數說明
    @ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求參數的各個方面
        name:參數名
        value:參數的漢字說明、解釋
        required:參數是否必須傳
        paramType:參數放在哪個地方
            · header --> 請求參數的獲取:@RequestHeader
            · query --> 請求參數的獲取:@RequestParam
            · path(用於restful接口)--> 請求參數的獲取:@PathVariable
            · body(不常用)
            · form(不常用)    
        dataType:參數類型,默認String,其它值dataType="Integer"       
        defaultValue:參數的默認值

@ApiResponses:用在請求的方法上,表示一組響應
    @ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應信息
        code:數字,例如400
        message:信息,例如"請求參數沒填好"
        response:拋出異常的類

@ApiModel:用於響應類上,表示一個返回響應數據的信息
            (這種一般用在post創建的時候,使用@RequestBody這樣的場景,
            請求參數無法使用@ApiImplicitParam註解進行描述的時候)
    @ApiModelProperty:用在屬性上,描述響應類的屬性

參考博客:https://www.jianshu.com/p/f30e0c646c63

演示

package chang.controller;

import chang.pojo.User;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Api(tags = "Test測試" ,description="用於用戶接口新增、修改、刪除以及查詢!")
@RestController
@RequestMapping("/test")
public class TestController {


    @GetMapping("/test1")
    @ApiOperation("這個是:/test/test1")
    public String test1(){
        return "test1";
    }

    @PostMapping("/test2")
    @ApiOperation("這個是:/test/test2")
    @ApiImplicitParams({
            @ApiImplicitParam(name="msg",value="傳入信息",required=true,paramType="query")
    })
    public String test2(String msg){
        return msg;
    }

    @GetMapping("/test3")
    @ApiOperation("這個是:/test/test3")
    @ApiImplicitParams({
            @ApiImplicitParam(name="msg",value="傳入信息",required=true,paramType="query")
    })
    @ApiResponses({
            @ApiResponse(code=400,message="請求參數沒填好"),
            @ApiResponse(code=404,message="請求路徑沒有或頁面跳轉路徑不對")
    })
    public String test3(String msg){
        return msg+"哈哈";
    }


    @GetMapping("/test4")
    @ApiOperation(value = "這個是:/test/test4",notes = "這個是備註")
    public User test4(){
        return new User();
    }


}
package chang.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

@Data
@ApiModel(value="用戶實體類",description="作爲系統中的用戶實體,是系統的核心操作人員")
public class User implements Serializable {

    @ApiModelProperty("用戶名")
    private String userName;

    @ApiModelProperty("密碼")
    private String password;

    @ApiModelProperty(value = "年齡",allowEmptyValue = true)
    private String age;

}

效果

image-20200228205130175

image-20200228205140003

image-20200228205157717

image-20200228205206524---------------------------------------------分割線------------------------------------------------

安利一個好看的框架

參考博客:https://blog.csdn.net/minkeyto/article/details/104541942?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

1.替換Maven (替換第一步那兩個依賴)

<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>knife4j-spring-boot-starter</artifactId>
   <version>2.0.1</version>
</dependency>

2.其他的都不要變

訪問:

http://localhost:8080/doc.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章