<input id="0qass"><u id="0qass"></u></input>
  • <input id="0qass"><u id="0qass"></u></input>
  • <menu id="0qass"><u id="0qass"></u></menu>

    swagger2的常用注解,傳遞參數的注意使用方法

    背景介紹:

    剛開始的時候,在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(){ }

    ?

    效果圖:?
    這里寫圖片描述

    • 6
      點贊
    • 2
      評論
    • 28
      收藏
    • 一鍵三連
      一鍵三連
    • 掃一掃,分享海報

    ??2021 CSDN 皮膚主題: 大白 設計師:CSDN官方博客 返回首頁
    實付
    使用余額支付
    點擊重新獲取
    掃碼支付
    錢包余額 0

    抵扣說明:

    1.余額是錢包充值的虛擬貨幣,按照1:1的比例進行支付金額的抵扣。
    2.余額無法直接購買下載,可以購買VIP、C幣套餐、付費專欄及課程。

    余額充值
    多乐彩