你應(yīng)該知道的HTTP Method知識(shí)
我們每天都要使用網(wǎng)絡(luò),例如你在網(wǎng)站上提交登錄表單時(shí),其實(shí)就是在向服務(wù)器發(fā)出請(qǐng)求。每次進(jìn)入新頁(yè)面時(shí),我們也都在不斷發(fā)出請(qǐng)求。發(fā)送出去的請(qǐng)求類型有好幾種,你可以在瀏覽器開(kāi)發(fā)者工具中看到。
今天我們來(lái)快速了解這些HTTP請(qǐng)求的含義以及使用它們的場(chǎng)景,以下是一些最常見(jiàn)的請(qǐng)求。

瀏覽器開(kāi)發(fā)者工具
GET
GET方法是一種常用的HTTP請(qǐng)求方法,你可以使用它去請(qǐng)求來(lái)自特定資源的數(shù)據(jù)。該資源可以是數(shù)據(jù)庫(kù)、blob存儲(chǔ)或其他類型的數(shù)據(jù)資源。
此方法僅用于請(qǐng)求數(shù)據(jù),而不能更改或添加新數(shù)據(jù)。如果需要向用戶顯示一些他們的信息,那你就可以使用此方法。不過(guò)要注意,請(qǐng)勿將這種方法與敏感信息一起使用,否則可能會(huì)被黑客截獲,造成關(guān)鍵數(shù)據(jù)泄露等風(fēng)險(xiǎn)。
POST
這是最常用的HTTP請(qǐng)求方法之一,因?yàn)樗悄憬邮苡脩糨斎氩?shù)據(jù)發(fā)送到服務(wù)器的方式。例如用戶創(chuàng)建新帳戶時(shí),這意味著需要向服務(wù)器發(fā)送POST請(qǐng)求。如果有人在網(wǎng)站上購(gòu)買(mǎi)商品時(shí),則使用的也是POST方法。
信息從前端到后端的傳輸通常與POST方法有關(guān),它通常與HTML表單(Form)一起使用。此外,你也會(huì)在很多API場(chǎng)景中大量使用它們。不過(guò)必須小心POST請(qǐng)求,多次提交可能會(huì)重復(fù)提交表單,導(dǎo)致一些數(shù)據(jù)問(wèn)題。
PUT
PUT請(qǐng)求與POST請(qǐng)求非常相似,它用于創(chuàng)建新資源或更新現(xiàn)有資源。與POST的主要區(qū)別在于調(diào)用該方法時(shí)所執(zhí)行的操作。與POST方法不同的是,多次調(diào)用PUT每次都會(huì)對(duì)數(shù)據(jù)資源產(chǎn)生相同的影響,但如果多次調(diào)用POST請(qǐng)求,則可能會(huì)導(dǎo)致重復(fù)數(shù)據(jù)或錯(cuò)誤數(shù)據(jù)。
如果某個(gè)資源(例如Blob存儲(chǔ))已經(jīng)有了你要準(zhǔn)備創(chuàng)建的數(shù)據(jù)的實(shí)例,則只需對(duì)其進(jìn)行更新。但如果你使用POST請(qǐng)求,可能會(huì)得到重復(fù)的版本而不是更新的版本。
HEAD
HEAD請(qǐng)求與GET請(qǐng)求類似,但它不返回響應(yīng)主體,這意味著你將無(wú)法看到請(qǐng)求的詳細(xì)結(jié)果。
HEAD請(qǐng)求的最常見(jiàn)用法是當(dāng)你嘗試決定是否下載大文件時(shí),可以執(zhí)行HEAD請(qǐng)求,以向用戶顯示要下載的文件,然后根據(jù)他們的響應(yīng),可以運(yùn)行GET方法或不執(zhí)行任何操作。這種辦法可以為你節(jié)省一些帶寬,尤其是在用戶決定不下載文件的情況下。
OPTIONS
如果你已有一些現(xiàn)有代碼,但不確定它支持哪種請(qǐng)求方法時(shí),則可使用OPTIONS方法進(jìn)行檢查。發(fā)出此請(qǐng)求后,Web服務(wù)器將會(huì)返回其支持的其他HTTP請(qǐng)求方法的列表。如果你要弄清楚某個(gè)方法應(yīng)該用PUT還是POST請(qǐng)求,那可能會(huì)有所幫助。
如果你正在使用API,并且需要查看可以使用的方法,這也將很有幫助。獲得服務(wù)器允許的HTTP請(qǐng)求方法列表后,就可以開(kāi)始執(zhí)行所需的操作。
后記
還有一些其他的方法,例如DELETE等,以上介紹的主要是常用的HTTP方法。
雖然HTTP請(qǐng)求是我們一直使用的東西,但是幾乎是無(wú)意識(shí)的,我們感受不到。不過(guò),作為開(kāi)發(fā)者的我們,要想編寫(xiě)出合理的程序,尤其是在RESTful的開(kāi)發(fā)模式中,更需要了解如何使用它們,并對(duì)其背后的概念有所了解。加油!

Http Method