@RequestParam和@RequestBody的區別,以及兩者是否能同時使用

@RequestParam和@RequestBody的區別

@RequestParam

用來處理Content-Type: 爲 application/x-www-form-urlencoded編碼的內容。(Http協議中,如果不指定Content-Type,則默認傳遞的參數就是application/x-www-form-urlencoded類型)
@RequestParam可以接受簡單類型的屬性,也可以接受對象類型。
實質是將Request.getParameter() 中的Key-Value參數Map利用Spring的轉化機制ConversionService配置,轉化成參數接收對象或字段。

@RequestBody

處理HttpEntity傳遞過來的數據,一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數據。

  • Get請求中,不能使用@RequestBody
  • Post請求中,通過HttpEntity傳遞的參數,必須要在請求頭中聲明數據的類型:Content-Type,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數據,然後綁定到相應的bean上。

能否同時使用@RequestParam和@RequestBody

在今天做項目的過程中試驗了一下,在Post方法中,@RequestParam 註解和 @RequestBody 註解是可以同時使用的,接口參數列表如下:

在這裏插入圖片描述
可以看到,這個接口裏的參數有@RequestParam 和 @RequestBody兩種形式。
在postman裏測試一下,得到結果如下:
在這裏插入圖片描述
可以看到,這個接口是通的,所以@RequestParam 和 @RequestBody 是可以同時使用的。
Post請求URL帶參數是沒有問題的,和Get請求帶參數方式一樣。

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