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


   
   
  
  
          
  1. @Api( value="用戶controller",tags={"用戶操作接口"})
  2. @RestController
  3. public class UserController {
  4. }

 

效果圖: 
這里寫圖片描述

@ApiOperation() 用於方法;表示一個http請求的操作 
value用於方法描述 
notes用於提示內容 
tags可以重新分組(視情況而用) 
@ApiParam() 用於方法,參數,字段說明;表示對參數的添加元數據(說明或是否必填等) 
name–參數名 
value–參數說明 
required–是否必填


   
   
  
  
          
  1. @Api( value="用戶controller",tags={"用戶操作接口"})
  2. @RestController
  3. public class UserController {
  4. @ApiOperation(value="獲取用戶信息",tags={"獲取用戶信息copy"},notes="注意問題點")
  5. @GetMapping("/getUserInfo")
  6. public User getUserInfo(@ApiParam(name="id",value="用戶id",required=true) Long id,@ApiParam(name="username",value="用戶名") String username) {
  7. // userService可忽略,是業務邏輯
  8. User user = userService.getUserInfo();
  9. return user;
  10. }
  11. }

 

效果圖: 
這里寫圖片描述

@ApiModel()用於類 ;表示對類進行說明,用於參數用實體類接收 
value–表示對象名 
description–描述 
都可省略 
@ApiModelProperty()用於方法,字段; 表示對model屬性的說明或者數據操作更改 
value–字段說明 
name–重寫屬性名字 
dataType–重寫屬性類型 
required–是否必填 
example–舉例說明 
hidden–隱藏


   
   
  
  
          
  1. @ApiModel(value="user對象",description="用戶對象user")
  2. public class User implements Serializable{
  3. private static final long serialVersionUID = 1L;
  4. @ApiModelProperty(value="用戶名",name="username",example="xingguo")
  5. private String username;
  6. @ApiModelProperty(value="狀態",name="state",required=true)
  7. private Integer state;
  8. private String password;
  9. private String nickName;
  10. private Integer isDeleted;
  11. @ApiModelProperty(value="id數組",hidden=true)
  12. private String[] ids;
  13. private List<String> idList;
  14. //省略get/set
  15. }

 

 


   
   
  
  
          
  1. @ApiOperation("更改用戶信息")
  2. @PostMapping("/updateUserInfo")
  3. public int updateUserInfo(@RequestBody @ApiParam(name="用戶對象",value="傳入json格式",required=true) User user){
  4. int num = userService.updateUserInfo(user);
  5. return num;
  6. }

 

 

效果圖: 
這里寫圖片描述

這里寫圖片描述

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

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


   
   
  
  
          
  1. @ApiOperation("查詢測試")
  2. @GetMapping("select")
  3. //@ApiImplicitParam(name="name",value="用戶名",dataType="String", paramType = "query")
  4. @ApiImplicitParams({
  5. @ApiImplicitParam(name="name",value="用戶名",dataType="string", paramType = "query",example="xingguo"),
  6. @ApiImplicitParam(name="id",value="用戶id",dataType="long", paramType = "query")})
  7. public void select(){
  8. }

 

效果圖: 
這里寫圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM