背景:
使用vue+axios方式代替ajax后向后台發送數據出現問題了,controller獲取不到數據。然后查、找、查、找中似乎找到一些門道。以下列出總結性的東西來記錄自己的思考成果,僅供參考,不保證正確性,歡迎指正。
① get方式的請求是沒有請求體的。但是get有query string parameter 這就是url?之后的一串東西。post請求發現了兩種請求體。一種是FromData形式的請求體,一種是request payload形式的。這個可以F12查看network詳細。
② post請求體是通過請求頭中的Content-Type來區分的:formData形式的Content-Type為application/x-www-form-urlencoded ;而request payload形式的請求體Content-Type為application/json或multipart/form-data 。
③ 使用@RequestBody注解接收request payload形式的請求體參數;使用@RequestParam注解接收formData形式的請求體參數。
④ 使用axios發送post請求時,使用序列化工具Qs.stringify()對data進行序列化。axios可以自動轉換請求體形式。
⑤ 查詢的時候,我是使用POST方式的request payload形式發送請求,后台使用@RequestBody注解進行接收。映射成Page對象或者直接map對象。
⑥ 單個刪除的時候,使用DELETE方式。例如 user/del/{id}。然后后台用@PathVariable注解進行接收。
⑦ 批量刪除的時候,使用DELETE方式。例如user/dels/{ids}。這里的ids是用逗號分隔成的字符串。后台用@PathVariable注解接收映射成List<String> ids形式的數據。