1. 程式人生 > >RESTful風格的請求方式, 放到body裡面請求(避免介面雖用的是post方式接收, 實則跟在url後面)

RESTful風格的請求方式, 放到body裡面請求(避免介面雖用的是post方式接收, 實則跟在url後面)

     雖然也用了很時間RESTful風格來開發,但最近發現自己犯了個錯誤(貌似我們公司好多人都在正在犯這個錯誤), 就是雖然我的後臺介面用的是post來接收,前端也是按照post方式來發送, 執行後實際上所有引數是跟在url後面, 這是很明顯的get方式才會的,  post方式應該放到body,特此記錄一下

先復原下錯誤場景和程式碼:

後臺介面用post方式接收(圖一),前端程式碼用post方式傳送(vue框架)(圖二), 瀏覽器url卻沒放在body裡,而是直接拼接到url後面(圖三)

圖一:

圖二:

圖三

很明顯上面的做法是不符合RESTful風格的,對於引數的少量資料可能沒有大的問題,如果資料量很大或者你的這個介面是提供給外部使用,那麼就可能會存在一定的風險,所以必須按照規範來進行。

===============================================================================================

由於我上面的程式碼已經進入生產環境了,所以,就不修改了,我拿另一部分正確的RESTful程式碼做演示

後端介面用post方式接收,但是介面形參要加上@RequestBody,表明是放在body裡面傳送(我的引數比較少,所以直接用個String型別接收,如果引數很多的話最好定義一個form表單,這樣以後引數發生變化的話只需要更改form表單一個地方)

(圖一所示)

前端用post方式傳送,但是引數處要用data,而不要params(圖二所示)

瀏覽器接收的時候就不會再拼接到url後面(我截圖傳送的是base64),而是放在Form Data裡面了(圖三)。

圖一:

圖二:

圖三: