swagger參數註解,後臺使用@RequestBody註解的實體類,但只需要傳實體類中的一個屬性

一開始是這個樣子的

	@ApiOperation(value = "刪除用戶", notes = "根據用戶名刪除指定用戶", httpMethod = "POST")
	@ApiImplicitParam(
		name = "username", value = "用戶的用戶名", required = true, dataType="String"
	)
	@ApiResponses({
	    //code重複的情況下,第一個聲明的生效。
	    @ApiResponse(code = 200,message = "刪除成功" ),
	    @ApiResponse(code = 202,message = "刪除失敗,用戶不存在")
	})
	@ApiVersion(group = ApiVersionConstant.FAP_APP100)
	@RequestMapping(value = "delete", method = RequestMethod.POST)
	public Boolean deleteUser(@RequestBody UserDemo user,HttpServletResponse response) {

這樣寫的結果會是下面這個樣子,導致出現兩個參數,一個實體類傳參類型是json格式,一個是註解中寫的屬性。

而且只能在實體類的json字符串中填寫要傳的值,在下面的屬性輸入框輸入值,傳到後臺是null。因爲後臺使用的是@RequestBody註解,只接收json字符串

 而且頁面上面還會報一個錯,其實就是你的參數是一個實體類,而你的dateType寫的是String。

在@RequestBody前面添加一個註解,@APIIgnore

public Boolean deleteUser(@ApiIgnore @RequestBody UserDemo user,HttpServletResponse response) 

頁面變成了這個亞子,只剩下這個屬性參數,但是……這樣你輸入一個值,點擊發送請求是發不過去的,因爲後臺是@RequestBody註解的實體類,只接收json類型的字符串,這樣發出去的一個鍵值對或者只是一個你輸入的字符串,而不是json類型,

 

 繼續改,在參數屬性註解裏添加一個paramType屬性,再把dateType屬性刪了(刪了就不報錯了)

@ApiImplicitParam(
		name = "username", value = "用戶的用戶名-String", required = true, paramType="body"
	)

結果就是,可以輸入json字符串,也不報錯。但是就有一點問題,就是不知道參數的類型,我覺得可以在參數描述那裏的value裏面加上一個參數類型。就像這樣。

如果本文幫助到了你,別忘了點贊加關注哦

你點的每個贊,我都認真當成了喜歡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章