Swagger3註解使用

天下沒有收費的bug發表於2021-04-07

這裡只簡單的說一下swagger的傳值,返回值時註解的使用演示。相關注解及說明見其他文章

接收引數方式1

我們常規接收引數,可以使用一個類,類裡面把屬性作為接收的引數,使用註解對屬性進行說明。但是這種傳參方式,我除錯的時候,支援前端的傳參方式為:form-data

例子如下:

因為這種方式我們用的不多,所以這裡就不展開來講

一般我們前端都是傳json資料過來後端,後端接收引數是直接用JSONObject或Map所以主要講一下第二種

 

接收引數方式2

前端傳參:json

後端接收:jsonObject或Map

對於這種JSONObject接收引數的,我們不能用第一種方式,此時應該用另外兩個註解來實現

 

注意:dataType屬性預設是String,如果要換成其他,比如int屬性,不能直接寫int或Interger,一定要加上全類名,不然會被解析成string型別。

程式碼如下:

 1      /**
 2       * 測試介面
 3       *
 4       * @param jsonObject 前端傳過來的引數
 5       * @return 6       */
 7      @PostMapping("/test")
 8      @ApiOperation(value = "測試介面", httpMethod = "POST", notes = "測試,這是一個後端的測試介面")
 9      @ApiImplicitParams({
10              @ApiImplicitParam(value = "這是具體的引數1說明", name = "parm1", required = true, dataType = "String",
11                      paramType = "query"),
12              @ApiImplicitParam(value = "引數二是string型別", name = "parm2", required = true, dataType = "String",
13                      paramType = "query"),
14              @ApiImplicitParam(value = "引數三是int型別", name = "parm3", required = true, dataType = "java.lang.Integer",
15                      paramType = "query"),
16              @ApiImplicitParam(value = "引數四是布林型別", name = "parm4", required = true, dataType = "java.lang.Boolean",
17                      paramType = "query"),
18              @ApiImplicitParam(value = "引數五:0表示成功,1表示失敗", name = "parm5", required = true, dataType = "String",
19                      paramType = "query")
20      })
21      public JSONObject testParm(JSONObject jsonObject) {
22 23          return null;
24 25      }
26 27  }

 

這樣子看,可能顯得程式碼略顯臃腫,但是我們寫程式碼的時候,把它摺疊起來就好了,效果如下

接下來,看一下swagger中的具體效果圖

響應引數

請求引數我們瞭解了,接下來我們看一下響應引數,首先所有的響應都要基於ResponseVo這個類。

 
 1 @Data
 2  @ApiModel()
 3  public class ResponseVo<T> implements Serializable {
 4      @ApiModelProperty(value = "預設時間")
 5      private String defaultTimeZone;
 6      @ApiModelProperty(value = "成功為1,失敗為0")
 7      private Integer result;
 8      @ApiModelProperty(value = "返回值資訊")
 9      private T data;
10      @ApiModelProperty(value = "返回給前端的語言,預設是:zh_CN")
11      private String lang;
12      @ApiModelProperty(value = "時間,預設是:Asia/Shanghai")
13      private String userTimeZone;
14 15 16      public ResponseVo(Integer result, T data) {
17          this(result, "Asia/Shanghai", "Asia/Shanghai", "zh_CN", data);
18      }
19 20 21      public ResponseVo(Integer result, String defaultTimeZone, String userTimeZone, String lang, T data) {
22          this.defaultTimeZone = defaultTimeZone;
23          this.result = result;
24          this.userTimeZone = userTimeZone;
25          this.lang = lang;
26          this.data = data;
27      }
28 29      @Override
30      public String toString() {
31          return JSONObject.toJSONString(this);
32      }
33  }

 

swagger效果圖

 

 

swagger除錯效果圖:

 

 

返回實列1

ok,接下來,我們進行一些複雜的操作,我們嘗試模擬下面這裡複雜的型別返回

可以看出 formFieldDataOrder是一個陣列

tableData是一個物件

formFieldData是一個物件

 

 

java程式碼

首先建立兩個類,然後在ResponseDataVo裡面定義三個屬性,,其中陣列的用定義為List,物件定義為具體的類

 

 

注意:定義為返回值的類,一定要加上@ApiModel註解

 

 

返回值設定

 

 

swagger效果:

 

 

 

返回實列2

接下來,我們往裡面新增資料

 

 

 

老樣子,建立IslandId類和Name類,在FormFieldData類中設定這兩個物件屬性

 

 

設定對應的返回值

 

 

swagger效果圖

 

 

swagger除錯結果圖

 

 

返回實列3

接下來,我們完善一下Island裡面的屬性

 

 

定義IslandId物件裡面的屬性

 

 

設定對應的值

 

 

swagger效果圖

 

 

除錯結果

 

 

到這裡,swagger註解的使用算是入門了,注意,其中還是有很多細節要注意的,由於時間問題,沒有一一列舉出來。歡迎大家點評指正。

 

相關文章