swagger是一個友善後端編寫接口文檔的開源項目,并提供界面化測試。
項目搭建
maven依賴
<!--swagger2-->
<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>
注:必須使用7.0 及以上的包
建立 SwaggerConfig類

package com.yxl.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;
/**
* 通路 swagger2 位址
* http://127.0.0.1:8080/swagger-ui.html
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/**
* 通過 createRestApi函數來建構一個DocketBean
* 函數名,可以随意命名,喜歡什麼命名就什麼命名
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())//調用apiInfo方法,建立一個ApiInfo執行個體,裡面是展示在文檔頁面資訊内容
.select()
//控制暴露出去的路徑下的執行個體
//如果某個接口不想暴露,可以使用以下注解
//@ApiIgnore 這樣,該接口就不會暴露在 swagger2 的頁面下
.apis(RequestHandlerSelectors.basePackage("com.yxl.modules.controller"))
.paths(PathSelectors.any())
.build()
.groupName("yxl 項目 1.0 API文檔");
}
//建構 api文檔的詳細資訊函數
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//頁面标題
.title("Spring Boot Swagger2 建構RESTful API")
.version("1.0")
.contact("yxl")
//描述
.description("API 描述")
.build();
}
}
測試swagger 編寫 controller 類
package com.yxl.modules.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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;
/**
* <p>
* 部落格表 前端控制器
* </p>
*
* @author yxl
* @since 2020-05-17
*/
@Api( tags = "管理 API")
@RestController
@RequestMapping("/blog")
public class BlogController {
@ApiOperation(value = "查詢清單",notes = "查詢清單",httpMethod = "GET")
@GetMapping("/list")
public String index(@ApiParam(value = "名字")@RequestParam String name) {
return "hello "+ name;
}
}
啟動項目
通路 swagger2 位址
- http://127.0.0.1:8080/swagger-ui.html
Springboot內建Swagger2
常用注解:
- @Api()用于類; 表示辨別這個類是swagger的資源
- @ApiOperation()用于方法; 表示一個http請求的操作
- @ApiParam()用于方法,參數,字段說明; 表示對參數的添加中繼資料(說明或是否必填等)
- @ApiModel()用于類 表示對類進行說明,用于參數用實體類接收
- @ApiModelProperty()用于方法,字段 表示對model屬性的說明或者資料操作更改
- @ApiIgnore()用于類,方法,方法參數 表示這個方法或者類被忽略
- @ApiImplicitParam() 用于方法 表示單獨的請求參數
- @ApiImplicitParams() 用于方法,包含多個 @ApiImplicitParam
@Api()
用于類;表示辨別這個類是swagger的資源
tags–表示說明
value–也是說明,可以使用tags替代
但是tags如果有多個值,會生成多個list
@Api(value="使用者controller",tags={"使用者操作接口"})
@RestController
public class UserController {
}
@ApiOperation() 用于方法;表示一個http請求的操作
value用于方法描述
notes用于提示内容
tags可以重新分組(視情況而用)
@ApiParam() 用于方法,參數,字段說明;表示對參數的添加中繼資料(說明或是否必填等)
name–參數名
value–參數說明
required–是否必填
@Api(value="使用者controller",tags={"使用者操作接口"})
@RestController
public class UserController {
@ApiOperation(value="擷取使用者資訊",tags={"擷取使用者資訊copy"},notes="注意問題點")
@GetMapping("/getUserInfo")
public User getUserInfo(@ApiParam(name="id",value="使用者id",required=true) Long id,@ApiParam(name="username",value="使用者名") String username) {
// userService可忽略,是業務邏輯
User user = userService.getUserInfo();
return user;
}
}