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/
版權所有,歡迎轉載,轉載請注明原文作者及出處。