Spring Boot + Spring Cloud 實現權限管理系統 后端篇(六):集成 Swagger API


spring-boot作為當前最為流行的Java web開發腳手架,越來越多的開發者選擇用其來構建企業級的RESTFul API接口。這些接口不但會服務於傳統的web端(b/s),也會服務於移動端。在實際開發過程中,這些接口還要提供給開發測試進行相關的白盒測試,那么勢必存在如何在多人協作中共享和及時更新API開發接口文檔的問題。 

假如你已經對傳統的wiki文檔共享方式所帶來的弊端深惡痛絕,那么嘗試一下Swagger2 方式,一定會讓你有不一樣的開發體驗。

使用 Swagger 集成文檔具有以下幾個優勢:

  • 功能豐富 :支持多種注解,自動生成接口文檔界面,支持在界面測試API接口功能;
  • 及時更新 :開發過程中花一點寫注釋的時間,就可以及時的更新API文檔,省心省力;
  • 整合簡單 :通過添加pom依賴和簡單配置,內嵌於應用中就可同時發布API接口文檔界面,不需要部署獨立服務。

1 . 添加依賴

添加 Maven 依賴, 這里選擇 2.8.0 版本。

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

2. 添加配置類

添加 swagger 配置類,在 kitty-boot 工程的 config 包下添加 SwaggerConfig 配置類。

package com.louis.kitty.boot.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 SwaggerConfig {

    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("Kitty API Doc")
                .description("This is a restful api document of Kitty.")
                .version("1.0")
                .build();
    }

}

3. 啟動測試

啟動 KittyApplication,  瀏覽器訪問:http://localhost:8088/swagger-ui.html#/

 

我們看到 Swagger 已經集成進來了,選擇 sys-user-controller,依次點擊 try it out -> execute,結果成功返回。

4. 常用注解

swagger 通過注解接口生成文檔,包括接口名,請求方法,參數,返回信息等

@Api: 修飾整個類,用於controller類上

@ApiOperation: 描述一個接口,用戶controller方法上

@ApiParam: 單個參數描述

@ApiModel: 用來對象接收參數,即返回對象

@ApiModelProperty: 對象接收參數時,描述對象的字段

@ApiResponse: Http響應其中的描述,在ApiResonse中

@ApiResponses: Http響應所有的描述,用在

@ApiIgnore: 忽略這個API

@ApiError: 發生錯誤的返回信息

@ApiImplicitParam: 一個請求參數

@ApiImplicitParam: 多個請求參數

更多說明參考 Swagger 使用手冊

5. 使用案例

package com.louis.kitty.admin.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.louis.kitty.admin.sevice.SysUserService;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

@Api(value = "用戶控制器")
@RestController
@RequestMapping("user")
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;
    
    @ApiOperation(value="獲取用戶信息", notes="根據用戶ID獲取用戶信息")
    @ApiImplicitParam(name = "userId", value = "用戶ID", required = true, dataType = "Long")
    @GetMapping(value="/findByUserId")
    public Object findByUserId(@RequestParam Long userId) {
        return sysUserService.findByUserId(userId);
    }
    
    @GetMapping(value="/findAll")
    public Object findAll() {
        return sysUserService.findAll();
    }
}

 6. 參考資料

官方網站:https://swagger.io/

使用手冊:https://gumutianqi1.gitbooks.io/specification-doc/content/tools-doc/spring-boot-swagger2-guide.html

網上教程:https://www.cnblogs.com/xiaohanghang/p/6018654.html

源碼下載

后端:https://gitee.com/liuge1988/kitty

前端:https://gitee.com/liuge1988/kitty-ui.git


作者:朝雨憶輕塵
出處:https://www.cnblogs.com/xifengxiaoma/ 
版權所有,歡迎轉載,轉載請注明原文作者及出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM