首先在idea引入后創建一個config 包並添加一個 SwaggerConfig
@Configuration @EnableSwagger2 public class swagger2 { @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("Springboot中使用Swagger文檔") .description("更多信息請等待更新") .version("1.0") .build(); } }
補充:
//此包路徑下的類,才生成接口文檔
.apis(RequestHandlerSelectors.basePackage("com.bike.controller"))
//加了ApiOperation注解的類,才生成接口文
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
啟動的效果
創建接口controller
首先這里涉及到多個API
1.@Api注解可以用來標記當前Controller的功能。
2.@ApiOperation注解用來標記一個方法的作用。
3.@ApiImplicitParam注解用來描述一個參數,可以配置參數的中文含義,也可以給參數設置默認值,這樣在接口測試的時候可以避免手動輸入。
如果有多個參數,則需要使用多個@ApiImplicitParam注解來描述,多個@ApiImplicitParam注解需要放在一個
4.@ApiImplicitParams注解中。需要注意的是,@ApiImplicitParam注解中雖然可以指定參數是必填的,但是卻不能代替@RequestParam(required = true),前者的必填只是在Swagger2框架內必填,拋棄了Swagger2,這個限制就沒用了,所以假如開發者需要指定一個參數必填,@RequestParam(required = true)注解還是不能省略。
如:
@RestController
@Api(tags = "用戶管理相關接口")
@RequestMapping(value="/users") // 通過這里配置使下面的映射都在/users下,可去除
public class UserController {
@ApiOperation(value = "查詢用戶",notes = "根據id查詢用戶")
//描述一個參數,可以配置參數的中文含義,也可以給參數設置默認值,required = true表示如果swagger測試為必填,defaultValue默認值
@ApiImplicitParam(name= "id",value = "用戶id",required = true,defaultValue = "66")
@GetMapping("/user")
public User getUserById(Integer id){
User user = new User();
user.setId(id);
return user;
}
@ApiOperation(value = "刪除用戶",notes = "根據id刪")
@ApiImplicitParam(name = "id",value = "用戶id",required = true,defaultValue = "55")
@ApiResponses({
@ApiResponse(code = 200,message = "刪除成功"),
@ApiResponse(code = 500,message = "失敗")
})
@DeleteMapping("/user/{id}")
public void deleteUserById(@PathVariable Integer id){
System.out.println("deleteUserById:"+id);
}
@PostMapping("/user")
@ApiOperation(value = "添加用戶",notes = "添加用戶接口")
public User addUser(@RequestBody User user) {
return user;
}
@PutMapping("/user")
@ApiImplicitParams({
@ApiImplicitParam(name="id",value = "用戶id",required = true,defaultValue = "77"),
@ApiImplicitParam(name="username",value = "用戶名",required = true,defaultValue = "taoge"),
})
@ApiOperation(value = "更新用戶",notes= "根據id更新用戶的接口")
// @ApiIgnore //表示忽略生成此接口
public User updateUserById(@RequestBody User user) {
return user;
}
}
在實體類中的用法
@Data
@ApiModel(value = "用戶表參數說明",description = "用戶表參數說明")
public class User {
@ApiModelProperty(value = "用戶id")
private Integer id;
@ApiModelProperty(value = "用戶姓名")
private String name;
@ApiModelProperty(value = "用戶年齡")
private Integer age;
}
效果如下:
Controller類效果
實體類效果