1. 程式人生 > >Swagger2常用註解

Swagger2常用註解

網上收集整理,個人學習記錄。

-------------------------------------------------------------------------------------------------------------------

本文說明:

1.版本:springfox-swagger2(2.4.0)springfox-swagger-ui (2.4.0) 
2.需要對swagger完成整合,如果沒有整合的可以參考我的另一篇文章:Spring boot整合swagger2

常用註解介紹:

- @Api()用於類
表示標識這個類是swagger的資源 
- @ApiOperation()用於方法
表示一個http請求的操作 
- @ApiParam()用於方法,引數,欄位說明
表示對引數的新增元資料(說明或是否必填等) 
- @ApiModel()用於類 
表示對類進行說明,用於引數用實體類接收 
- @ApiModelProperty()用於方法,欄位 
表示對model屬性的說明或者資料操作更改 
- @ApiIgnore()用於類,方法,方法引數 
表示這個方法或者類被忽略 
- @ApiImplicitParam() 用於方法 
表示單獨的請求引數 
- @ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam
- @ApiResponses
用在請求的方法上,表示一組響應
- @ApiResponse
用在@ApiResponses中,一般用於表達一個錯誤的響應資訊

常用註解使用示例:

@Api() 
用於類;表示標識這個類是swagger的資源 
tags–表示說明 
value–也是說明,可以使用tags替代 
但是tags如果有多個值,會生成多個list

例:

@Api(value="swaggerController",tags={"swaggerDemoController相關的api1","swaggerDemoController相關的api2"})
public class SwaggerDemoController {

}

@ApiOperation() 用於方法;表示一個http請求的操作 
value用於方法描述 
notes用於提示內容 
tags可以重新分組(視情況而用)

例:

@ApiOperation(value = "根據id查詢學生資訊", notes = "查詢資料庫中某個的學生資訊")

@ApiOperation(value = "根據id查詢學生資訊", notes = "查詢資料庫中某個的學生資訊",tags={"swaggerDemoController的getStudent1",
        "swaggerDemoController的getStudent2"})

@ApiParam() 用於方法,引數,欄位說明;表示對引數的新增元資料(說明或是否必填等) 
name–引數名 
value–引數說明 
required–是否必填

例:

public Student getStudent(@PathVariable @ApiParam(name="id",value="學生id說明",required=true) int id) {
    logger.info("開始查詢某個學生資訊");
    return studentService.selectStudentById(id);
}

@ApiModel()用於類 ;表示對類進行說明,用於引數用實體類接收 
value–表示物件名 
description–描述 
都可省略 

@ApiModelProperty()用於方法,欄位; 表示對model屬性的說明或者資料操作更改 
value–欄位說明 
name–重寫屬性名字 
dataType–重寫屬性型別 
required–是否必填 
example–舉例說明 
hidden–隱藏

例:

@ApiModel(value = "user物件", description = "使用者物件user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    private String userId;
    @ApiModelProperty(value = "使用者名稱", name = "userName", example = "baidu1")
    private String userName;
    @ApiModelProperty(value = "狀態", name = "state", required = true)
    private String state;
    @ApiModelProperty(hidden = true)
    private String extendColumn1;

}

@ApiIgnore()用於類或者方法上,可以不被swagger顯示在頁面上 

例:

@ApiIgnore()
public User getUser(@RequestBody @ApiParam(name = "使用者物件", value = "傳入json格式", required = false) User user) {
    logger.info("開始查詢某個使用者資訊");
    user.setUserId("abc");
    return user;
}
如下圖 getUser() 已經沒有被顯示了


@ApiImplicitParams() 用於方法,包含多個 @ApiImplicitParam

@ApiImplicitParam() 用於方法,表示單獨的請求引數 
name–引數ming 
value–引數說明 
dataType–資料型別 
paramType–引數型別 
example–舉例說明
例:

@ApiImplicitParams({
        @ApiImplicitParam(name = "name", value = "學生名", dataType = "String", paramType = "query", example =
                "baidu2"),
        @ApiImplicitParam(name = "id", value = "學生id", dataType = "String", paramType = "path")})
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Student getStudent(@PathVariable @ApiParam(name = "id", value = "學生id說明", required = true) String id) {
    logger.info("開始查詢某個學生資訊");
    return studentService.selectStudentById(id);
}

@ApiResponses:用於請求的方法上,表示一組響應
@ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應資訊
code:數字,例如400
message:資訊,例如"請求引數沒填好"

例:

@ApiResponses({
        @ApiResponse(code = 400, message = "請求引數沒填好"),
        @ApiResponse(code = 404, message = "請求路徑沒有或頁面跳轉路徑不對")
})


 

注意:code值必須是http 返回code值,如果不是會報錯

例:

@ApiResponses({
        @ApiResponse(code = 12345, message = "上山打老虎"),
        @ApiResponse(code = 400, message = "請求引數沒填好"),
        @ApiResponse(code = 404, message = "請求路徑沒有或頁面跳轉路徑不對")
})

參考資料: