1. 程式人生 > >Swagger 常用註解使用詳解

Swagger 常用註解使用詳解

剛開始的時候,在controller層使用@RequestParam的時候,發現這個引數是必須要輸入值的,但是我們有時候必須查詢的時候允許引數為空,使用這個註解就不行了。

在集成了swagger2後,找了半天的原因,發現使用@ApiImplicitParam這個註解可以解決這個問題。

對應下面的引數。

所以我們可以使用這個註解來解決我們所遇到的參考為空的問題。

而且已經集成了swagger2,所以我們儘量來使用這個註解吧。

說明: 
1.這裡使用的版本:springfox-swagger2(2.4)springfox-swagger-ui (2.4) 
2.這裡是說明常用註解的含義和基本用法(也就是說已經對swagger進行整合完成) 
沒有整合的請參見 

SpringBoot整合springfox-swagger2構建restful API 
SpringMVC整合springfox-swagger2構建restful API 
官網WIKI 
常用註解: 
@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;
  }
}

效果圖: 
這裡寫圖片描述

@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;
     @ApiModelProperty(value="使用者名稱",name="username",example="xingguo")
     private String username;
     @ApiModelProperty(value="狀態",name="state",required=true)
      private Integer state;
      private String password;
      private String nickName;
      private Integer isDeleted;

      @ApiModelProperty(value="id陣列",hidden=true)
      private String[] ids;
      private List<String> idList;
     //省略get/set
}
  @ApiOperation("更改使用者資訊")
  @PostMapping("/updateUserInfo")
  public int updateUserInfo(@RequestBody @ApiParam(name="使用者物件",value="傳入json格式",required=true) User user){

     int num = userService.updateUserInfo(user);
     return num;
  }

效果圖: 
這裡寫圖片描述

這裡寫圖片描述

@ApiIgnore()用於類或者方法上,可以不被swagger顯示在頁面上 
比較簡單, 這裡不做舉例

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

  @ApiOperation("查詢測試")
  @GetMapping("select")
  //@ApiImplicitParam(name="name",value="使用者名稱",dataType="String", paramType = "query")
  @ApiImplicitParams({
  @ApiImplicitParam(name="name",value="使用者名稱",dataType="string", paramType = "query",example="xingguo"),
  @ApiImplicitParam(name="id",value="使用者id",dataType="long", paramType = "query")})
  public void select(){

  }

效果圖: 
這裡寫圖片描述