摘要:如,是類的傳輸方式,與沒有實(shí)質(zhì)區(qū)別。是測(cè)試服務(wù)器的該資源情況,不返回實(shí)體的主體部分。請(qǐng)求可以獲取回服務(wù)器接收到的該請(qǐng)求的原始報(bào)文,從而判斷路徑中的代理和防火墻是否對(duì)該條請(qǐng)求進(jìn)行修改。為了獲取信息且不需要傳大量條件信息的接口。
前言 HTTP通信的7種方式
在HTTP通信中主要分為GET和POST。如PUT,DELETE是類POST的傳輸方式,與POST沒有實(shí)質(zhì)區(qū)別。OPTION是查看服務(wù)器支持的請(qǐng)求方法。HEAD是測(cè)試服務(wù)器的該資源情況,不返回實(shí)體的主體部分。TRACE請(qǐng)求可以獲取回服務(wù)器接收到的該請(qǐng)求的原始報(bào)文,從而判斷路徑中的代理和防火墻是否對(duì)該條請(qǐng)求進(jìn)行修改。
HTTP請(qǐng)求報(bào)文發(fā)送格式不因請(qǐng)求方式不同而改變HTTP報(bào)文格式如下
<請(qǐng)求方法> <請(qǐng)求路徑> <協(xié)議版本> <請(qǐng)求頭> <主體body>
無論用任何請(qǐng)求方法,都可以發(fā)送這樣的請(qǐng)求報(bào)文,報(bào)文結(jié)構(gòu)是HTTP的協(xié)議規(guī)范,請(qǐng)求方法只是告訴服務(wù)器如何來看待這條請(qǐng)求。因?yàn)樵谟行┪恼轮袝?huì)提到GET請(qǐng)求不能傳body數(shù)據(jù),而真實(shí)的情況是有些服務(wù)端框架接收到GET請(qǐng)求后會(huì)自動(dòng)將GET請(qǐng)求的body部分丟棄,所以大家要注意。所以為了規(guī)范,大家在使用GET請(qǐng)求時(shí)還是不要將請(qǐng)求數(shù)據(jù)放在body中。
何時(shí)用GET請(qǐng)求為了規(guī)范,使用GET請(qǐng)求時(shí)就不要在主體body中放數(shù)據(jù)了,避免不必要的錯(cuò)誤。所以請(qǐng)求中的數(shù)據(jù)是放在URL上的。
瀏覽器網(wǎng)址欄和頁面跳轉(zhuǎn)。
為了獲取信息且不需要傳大量條件信息的接口。
例如用GET做登錄請(qǐng)求
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何時(shí)用POST請(qǐng)求
post請(qǐng)求可以在body中傳送大量信息
以上傳name=haha,password=miaomiao為例,查看不同body數(shù)據(jù)格式
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--
其中表單的每一項(xiàng)都有Content-Disposition描述。
------WebKitFormBoundary7MA4YWxkTrZu0gW--是隨機(jī)生成的分隔標(biāo)記
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
因?yàn)椴挥脗魑募?,所以不用多帶帶描述,將表單信息拼湊在一起就可以了?/p>
application/x-www-form-urlencoded: 窗體數(shù)據(jù)被編碼為名稱/值對(duì)。這是標(biāo)準(zhǔn)的編碼格式。
multipart/form-data: 窗體數(shù)據(jù)被編碼為一條消息,頁上的每個(gè)控件對(duì)應(yīng)消息中的一個(gè)部分。
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(二進(jìn)制)
用作傳輸文件,包括前面的form-data上傳文件,文件都是以一定的編碼方式寫在body中的,在服務(wù)器端獲取該請(qǐng)求的輸入流后,即可按行接收流中的數(shù)據(jù)信息。
在Spring Boot中接口的接收數(shù)據(jù)總結(jié) URL接收GET參數(shù)列表對(duì)于數(shù)字基本類型和包裝類型都可接收,但是若前端并沒傳這個(gè)數(shù)字,那么包裝類型可以在代碼里判空,異常處理就好,但是基本類型是不能判空的,所以對(duì)于數(shù)字首選包裝類型。
@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" }表單數(shù)據(jù)
兩種表單的請(qǐng)求Java接口都可以這樣寫。
@RequestMapping(value = "/",method = RequestMethod.POST) @ResponseBody private ResInfo test(String name,String password){ return new ResInfo(200,"登錄成功: "+name+" "+password); }
若表單中要上傳文件,則文件項(xiàng)該用注解寫名稱,參數(shù)名都可用@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響應(yīng)
{ "code": 200, "msg": "登錄成功: haha miaomiao文件名:profile.jpg" }接收json對(duì)象
class User { public String name; public String password; public User() { } //若重寫了構(gòu)造方法,一定要寫上空構(gòu)造方法,否則spring不能new新對(duì)象以接收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響應(yīng)
{ "code": 200, "msg": "登錄成功: haha miaomiao" }json對(duì)象和單個(gè)值混合接收
思想:把json對(duì)象放在body中,把單個(gè)值放在url參數(shù)列表中,所以構(gòu)造請(qǐng)求時(shí)url和body兩部分都要構(gòu)造。
@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響應(yīng)
{ "code": 200, "msg": "登錄成功: haha miaomiaomsg:hello, my name is msg !" }
至此完成了從HTTP構(gòu)造到spring對(duì)接口解析的總結(jié)與梳理,歡迎大家指正。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75130.html
摘要:前端開發(fā)如何做好本地接口模擬之前有寫過一篇本地化接口模擬前后端并行開發(fā),講到過本地接口模擬,但不太細(xì)致。有哪些途徑本地接口模擬一般分為工具層面和代碼層面。因?yàn)楸镜亟涌谀M功能主要是針對(duì)的返回值為格式的異步請(qǐng)求,所以這種方式主要用文件。 前端開發(fā)如何做好本地接口模擬 之前有寫過一篇 本地化接口模擬、前后端并行開發(fā),講到過本地接口模擬,但不太細(xì)致。這次細(xì)細(xì)的說說本地接口模擬。 1. 有什么...
摘要:本使用創(chuàng)建本地服務(wù)器,在就能完成全部流程,并不需要線上服務(wù)器。路徑要與后端接口一致。后端返回成功后,前端數(shù)據(jù)中對(duì)應(yīng)的元素也要?jiǎng)h掉,更新視圖。控制器里拿一個(gè)方法出來說一下吧,完整的代碼都在。讀取操作完成后調(diào)用釋放連接。 寫在前面 本文只是本人學(xué)習(xí)過程的一個(gè)記錄,并不是什么非常嚴(yán)謹(jǐn)?shù)慕坛?,希望和大家一起共同進(jìn)步。也希望大家能指出我的問題。適合有一定基礎(chǔ),志在全棧的前端初學(xué)者學(xué)習(xí),從點(diǎn)擊按鈕...
摘要:今天我們來結(jié)合實(shí)例給大家講述的實(shí)戰(zhàn)應(yīng)用,就是如何使用前端與后端實(shí)現(xiàn)用戶登錄鑒權(quán)認(rèn)證的過程。只用了一個(gè)串,建立前后端的驗(yàn)證的數(shù)據(jù)傳遞,實(shí)現(xiàn)了有效的登錄鑒權(quán)過程。 今天我們來結(jié)合實(shí)例給大家講述JWT(Json Web Token)的實(shí)戰(zhàn)應(yīng)用,就是如何使用前端Axios與后端PHP實(shí)現(xiàn)用戶登錄鑒權(quán)認(rèn)證的過程。 文中涉及的重要知識(shí)點(diǎn): axios異步請(qǐng)求:axios-基于Promise的HTT...
閱讀 564·2024-11-06 13:38
閱讀 853·2024-09-10 13:19
閱讀 1007·2024-08-22 19:45
閱讀 1395·2021-11-19 09:40
閱讀 2649·2021-11-18 13:14
閱讀 4305·2021-10-09 10:02
閱讀 2340·2021-08-21 14:12
閱讀 1295·2019-08-30 15:54