摘要:如,是類的傳輸方式,與沒有實質區別。是測試服務器的該資源情況,不返回實體的主體部分。請求可以獲取回服務器接收到的該請求的原始報文,從而判斷路徑中的代理和防火墻是否對該條請求進行修改。為了獲取信息且不需要傳大量條件信息的接口。
前言 HTTP通信的7種方式
在HTTP通信中主要分為GET和POST。如PUT,DELETE是類POST的傳輸方式,與POST沒有實質區別。OPTION是查看服務器支持的請求方法。HEAD是測試服務器的該資源情況,不返回實體的主體部分。TRACE請求可以獲取回服務器接收到的該請求的原始報文,從而判斷路徑中的代理和防火墻是否對該條請求進行修改。
HTTP請求報文發送格式不因請求方式不同而改變HTTP報文格式如下
<請求方法> <請求路徑> <協議版本> <請求頭> <主體body>
無論用任何請求方法,都可以發送這樣的請求報文,報文結構是HTTP的協議規范,請求方法只是告訴服務器如何來看待這條請求。因為在有些文章中會提到GET請求不能傳body數據,而真實的情況是有些服務端框架接收到GET請求后會自動將GET請求的body部分丟棄,所以大家要注意。所以為了規范,大家在使用GET請求時還是不要將請求數據放在body中。
何時用GET請求為了規范,使用GET請求時就不要在主體body中放數據了,避免不必要的錯誤。所以請求中的數據是放在URL上的。
瀏覽器網址欄和頁面跳轉。
為了獲取信息且不需要傳大量條件信息的接口。
例如用GET做登錄請求
GET /online/test/?name=haha& password=miaomiao HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: application/x-www-form-urlencoded cache-control: no-cache Postman-Token: 14a1347a-c540-48f0-9d49-6299f86c3a73何時用POST請求
post請求可以在body中傳送大量信息
以上傳name=haha,password=miaomiao為例,查看不同body數據格式
form-data(表單,可以傳文件)POST /online/test/? HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW cache-control: no-cache Postman-Token: c6e21725-caec-4a40-841c-7b92f87f6999 Content-Disposition: form-data; name="name" haha Content-Disposition: form-data; name="password" miaomiao ------WebKitFormBoundary7MA4YWxkTrZu0gW--
若在表單中附加一張圖片
POST /online/test/? HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW cache-control: no-cache Postman-Token: 437207ba-e007-4de8-bbcd-bdc88db6e445 Content-Disposition: form-data; name="name" haha Content-Disposition: form-data; name="password" miaomiao Content-Disposition: form-data; name="profile"; filename="C:UsersThinkPicturesprofile.jpg ------WebKitFormBoundary7MA4YWxkTrZu0gW--
其中表單的每一項都有Content-Disposition描述。
------WebKitFormBoundary7MA4YWxkTrZu0gW--是隨機生成的分隔標記
x-www-form-urlencoded(也是表單,但不可以傳文件)POST /online/test/? HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: application/x-www-form-urlencoded cache-control: no-cache Postman-Token: 35566466-0568-4731-9c1c-6eda7dfca105 name=hahapassword=miaomiaoundefined=undefined
因為不用傳文件,所以不用多帶帶描述,將表單信息拼湊在一起就可以了。
application/x-www-form-urlencoded: 窗體數據被編碼為名稱/值對。這是標準的編碼格式。
multipart/form-data: 窗體數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。
raw(text,json,xml...)(其它文本格式)以json格式為例
POST /online/test/? HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: application/json cache-control: no-cache Postman-Token: 06a9f071-4424-428a-b17b-9b4fe6f209a2 { "name":"haha", "password":"miaomiao" }------WebKitFormBoundary7MA4YWxkTrZu0gW--binary(二進制)
用作傳輸文件,包括前面的form-data上傳文件,文件都是以一定的編碼方式寫在body中的,在服務器端獲取該請求的輸入流后,即可按行接收流中的數據信息。
在Spring Boot中接口的接收數據總結 URL接收GET參數列表對于數字基本類型和包裝類型都可接收,但是若前端并沒傳這個數字,那么包裝類型可以在代碼里判空,異常處理就好,但是基本類型是不能判空的,所以對于數字首選包裝類型。
@RequestMapping(value = "/",method = RequestMethod.GET) @ResponseBody private ResInfo test(String name,String password){ return new ResInfo(200,"登錄成功: "+name+" "+password); }
PostMan接收
{ "code": 200, "msg": "登錄成功: haha miaomiao" }表單數據
兩種表單的請求Java接口都可以這樣寫。
@RequestMapping(value = "/",method = RequestMethod.POST) @ResponseBody private ResInfo test(String name,String password){ return new ResInfo(200,"登錄成功: "+name+" "+password); }
若表單中要上傳文件,則文件項該用注解寫名稱,參數名都可用@RequestParam替代。只有form-data可以接收文件。
@RequestMapping(value = "/",method = RequestMethod.POST) @ResponseBody private ResInfo test(String name,String password,@RequestParam("profile") MultipartFile multipartFile){ String fileName = multipartFile.getOriginalFilename(); return new ResInfo(200,"登錄成功: "+name+" "+password+"文件名:"+fileName); }
Postman響應
{ "code": 200, "msg": "登錄成功: haha miaomiao文件名:profile.jpg" }接收json對象
class User { public String name; public String password; public User() { } //若重寫了構造方法,一定要寫上空構造方法,否則spring不能new新對象以接收json public User(String name, String password) { this.name = name; this.password = password; } } @RequestMapping(value = "/", method = RequestMethod.POST) @ResponseBody private ResInfo test(@RequestBody User user) { return new ResInfo(200, "登錄成功: " + user.name + " " + user.password); }
Postman響應
{ "code": 200, "msg": "登錄成功: haha miaomiao" }json對象和單個值混合接收
思想:把json對象放在body中,把單個值放在url參數列表中,所以構造請求時url和body兩部分都要構造。
@RequestMapping(value = "/", method = RequestMethod.POST) @ResponseBody private ResInfo test(@RequestBody User user, String msg) { return new ResInfo(200, "登錄成功: " + user.name + " " + user.password + "msg:" + msg); }
Postman響應
{ "code": 200, "msg": "登錄成功: haha miaomiaomsg:hello, my name is msg !" }
至此完成了從HTTP構造到spring對接口解析的總結與梳理,歡迎大家指正。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75130.html
摘要:前端開發如何做好本地接口模擬之前有寫過一篇本地化接口模擬前后端并行開發,講到過本地接口模擬,但不太細致。有哪些途徑本地接口模擬一般分為工具層面和代碼層面。因為本地接口模擬功能主要是針對的返回值為格式的異步請求,所以這種方式主要用文件。 前端開發如何做好本地接口模擬 之前有寫過一篇 本地化接口模擬、前后端并行開發,講到過本地接口模擬,但不太細致。這次細細的說說本地接口模擬。 1. 有什么...
摘要:本使用創建本地服務器,在就能完成全部流程,并不需要線上服務器。路徑要與后端接口一致。后端返回成功后,前端數據中對應的元素也要刪掉,更新視圖。控制器里拿一個方法出來說一下吧,完整的代碼都在。讀取操作完成后調用釋放連接。 寫在前面 本文只是本人學習過程的一個記錄,并不是什么非常嚴謹的教程,希望和大家一起共同進步。也希望大家能指出我的問題。適合有一定基礎,志在全棧的前端初學者學習,從點擊按鈕...
摘要:今天我們來結合實例給大家講述的實戰應用,就是如何使用前端與后端實現用戶登錄鑒權認證的過程。只用了一個串,建立前后端的驗證的數據傳遞,實現了有效的登錄鑒權過程。 今天我們來結合實例給大家講述JWT(Json Web Token)的實戰應用,就是如何使用前端Axios與后端PHP實現用戶登錄鑒權認證的過程。 文中涉及的重要知識點: axios異步請求:axios-基于Promise的HTT...
閱讀 362·2024-11-06 13:38
閱讀 738·2024-09-10 13:19
閱讀 866·2024-08-22 19:45
閱讀 1363·2021-11-19 09:40
閱讀 2598·2021-11-18 13:14
閱讀 4266·2021-10-09 10:02
閱讀 2283·2021-08-21 14:12
閱讀 1268·2019-08-30 15:54