詳解HTTP4種方法(GET、POST、 PUT和DELETE)
一、GET 和 POST
1. GET方法
特點(diǎn):
- 用途:用于從服務(wù)器獲取數(shù)據(jù)。
- 參數(shù)傳遞方式:參數(shù)會(huì)附加在URL后面,以
key=value的形式,通過(guò)查詢字符串傳遞,例如:
http://example.com/page?name=John&age=30
- 可見(jiàn)性:參數(shù)是明文的,用戶可以直接在瀏覽器地址欄看到傳遞的參數(shù)。
- 限制:由于URL長(zhǎng)度限制(具體限制因?yàn)g覽器和服務(wù)器而異,但一般為2000字符左右),傳輸?shù)臄?shù)據(jù)量較小。
- 冪等性:GET請(qǐng)求是冪等的,重復(fù)發(fā)送相同的GET請(qǐng)求不會(huì)改變服務(wù)器的狀態(tài)。
- 緩存:GET請(qǐng)求的數(shù)據(jù)可以被瀏覽器緩存,也可以被保存在瀏覽器歷史中。
優(yōu)點(diǎn):
- 簡(jiǎn)單直觀,適合獲取數(shù)據(jù)。
- 可以通過(guò)書簽保存,便于分享。
缺點(diǎn):
- 參數(shù)暴露在URL中,敏感數(shù)據(jù)(如密碼)不安全。
- 數(shù)據(jù)量有限,無(wú)法上傳較大的數(shù)據(jù)。
2. POST方法
特點(diǎn):
- 用途:用于向服務(wù)器提交數(shù)據(jù),例如表單提交或上傳文件。
- 參數(shù)傳遞方式:參數(shù)包含在請(qǐng)求體(Body)中,通常是隱式的。例如:
POST /form HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded Content-Length: 27 name=John&age=30
- 可見(jiàn)性:參數(shù)不顯示在URL中,用戶看不到具體傳輸?shù)膬?nèi)容。
- 限制:幾乎沒(méi)有數(shù)據(jù)大小限制,可以傳輸大文件。
- 冪等性:POST請(qǐng)求不是冪等的,每次請(qǐng)求都會(huì)對(duì)服務(wù)器資源產(chǎn)生不同的影響(如新增數(shù)據(jù))。
- 緩存:POST請(qǐng)求默認(rèn)不會(huì)被瀏覽器緩存。
優(yōu)點(diǎn):
- 安全性比GET稍高(參數(shù)不直接暴露在URL中,但仍需結(jié)合HTTPS來(lái)保護(hù)數(shù)據(jù))。
- 支持傳輸大量數(shù)據(jù),適合復(fù)雜的數(shù)據(jù)提交。
缺點(diǎn):
- 不如GET直觀,無(wú)法通過(guò)URL直接分享。
- 相比GET,性能可能稍低(需要更多的資源來(lái)處理請(qǐng)求體)。
3. 總結(jié)對(duì)比
| 屬性 | GET | POST |
|---|---|---|
| 用途 | 獲取數(shù)據(jù) | 提交數(shù)據(jù) |
| 參數(shù)傳遞 | URL查詢字符串 | 請(qǐng)求體(Body) |
| 安全性 | 參數(shù)明文暴露,不適合敏感數(shù)據(jù) | 參數(shù)隱藏,但需要HTTPS保護(hù) |
| 數(shù)據(jù)大小 | 受URL長(zhǎng)度限制 | 無(wú)明顯限制 |
| 冪等性 | 冪等 | 非冪等 |
| 緩存 | 可緩存 | 不可緩存 |
| 可見(jiàn)性 | 參數(shù)可見(jiàn) | 參數(shù)不可見(jiàn) |
選擇方法:
- GET:適合只獲取數(shù)據(jù)、無(wú)副作用的場(chǎng)景,如加載網(wǎng)頁(yè)內(nèi)容。
- POST:適合提交表單數(shù)據(jù)、上傳文件或其他需要修改服務(wù)器數(shù)據(jù)的場(chǎng)景。
二、PUT 和 DELETE
PUT 和 DELETE 是HTTP協(xié)議中的兩種方法,主要用于對(duì)資源執(zhí)行修改和刪除操作。它們和 GET、POST 一樣,都是定義在HTTP/1.1中的基本方法,常用于RESTful API中。
1. PUT 方法
特點(diǎn)
用途:用于創(chuàng)建或更新資源。
- 如果指定的資源不存在,則創(chuàng)建新資源。
- 如果指定的資源已存在,則更新該資源。
冪等性:PUT 是冪等的,重復(fù)發(fā)送相同的 PUT 請(qǐng)求,對(duì)服務(wù)器的狀態(tài)不會(huì)產(chǎn)生額外影響(相同數(shù)據(jù)會(huì)覆蓋現(xiàn)有資源)。
請(qǐng)求體:PUT 請(qǐng)求體中包含需要?jiǎng)?chuàng)建或更新的數(shù)據(jù)。
示例
場(chǎng)景:創(chuàng)建或更新用戶信息。
請(qǐng)求:
PUT /users/123 HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 47
{
"username": "johndoe",
"email": "john@example.com"
}- 目標(biāo)資源:
/users/123(用戶ID為123的資源)。 - 請(qǐng)求體:包含用戶數(shù)據(jù)。
響應(yīng):
- 成功創(chuàng)建資源:
201 Created - 成功更新資源:
200 OK
2. DELETE 方法
特點(diǎn)
- 用途:用于刪除服務(wù)器上的指定資源。
- 冪等性:DELETE 也是冪等的。對(duì)同一資源發(fā)送多次 DELETE 請(qǐng)求,結(jié)果是一樣的:資源被刪除(或已經(jīng)不存在)。
- 請(qǐng)求體:通常不需要請(qǐng)求體,資源信息由 URL 指定。
示例
場(chǎng)景:刪除用戶信息。
請(qǐng)求:
DELETE /users/123 HTTP/1.1 Host: example.com
- 目標(biāo)資源:
/users/123(用戶ID為123的資源)。
響應(yīng):
- 刪除成功:
200 OK或204 No Content - 資源不存在:
404 Not Found
3. PUT 和 DELETE 的區(qū)別
| 屬性 | PUT | DELETE |
|---|---|---|
| 用途 | 創(chuàng)建或更新資源 | 刪除資源 |
| 冪等性 | 冪等 | 冪等 |
| 請(qǐng)求體 | 包含資源數(shù)據(jù),用于創(chuàng)建或更新 | 通常不需要請(qǐng)求體 |
| 響應(yīng)狀態(tài)碼 | 200 OK(更新成功),201 Created(創(chuàng)建成功) | 200 OK,204 No Content,或 404 Not Found |
| 對(duì)服務(wù)器的影響 | 寫操作(新增或覆蓋資源) | 刪除操作 |
4. PUT 和 POST 的對(duì)比
- PUT 是冪等的,通常指定資源的完整路徑(如
/users/123),強(qiáng)調(diào)資源替換。 - POST 不是冪等的,通常操作資源集合(如
/users),強(qiáng)調(diào)資源新增。
5. RESTful API 實(shí)踐建議
- PUT:用來(lái)對(duì)已有資源進(jìn)行修改,或在知道資源路徑的情況下創(chuàng)建資源。
- DELETE:用來(lái)刪除指定資源,保證資源唯一性。
- POST:用來(lái)新增資源,尤其在路徑未知或創(chuàng)建規(guī)則復(fù)雜時(shí)。
三、總結(jié)
1. GET (讀取數(shù)據(jù))
- 作用:從服務(wù)器獲取數(shù)據(jù)
- 參數(shù)位置:通過(guò) URL 的查詢字符串傳遞參數(shù)。
- 請(qǐng)求體:無(wú)請(qǐng)求體。
- 冪等性:冪等,多次請(qǐng)求結(jié)果相同。
- 適用場(chǎng)景:加載網(wǎng)頁(yè)內(nèi)容、獲取用戶信息等。
- 示例:
GET /users/123 HTTP/1.1
2. POST (創(chuàng)建數(shù)據(jù))
作用:向服務(wù)器提交數(shù)據(jù),通常用于創(chuàng)建新資源
參數(shù)位置:數(shù)據(jù)在請(qǐng)求體中傳遞。
請(qǐng)求體:有請(qǐng)求體(如表單數(shù)據(jù)或 JSON)。
冪等性:非冪等,每次請(qǐng)求可能創(chuàng)建新的資源。
適用場(chǎng)景:提交表單、新增用戶、上傳文件等。
示例:
POST /users HTTP/1.1
Content-Type: application/json
{
"username": "johndoe",
"email": "john@example.com"
}3. PUT (創(chuàng)建或更新數(shù)據(jù))
作用:創(chuàng)建或更新指定的資源
參數(shù)位置:數(shù)據(jù)在請(qǐng)求體中傳遞。
請(qǐng)求體:有請(qǐng)求體(包含完整的資源數(shù)據(jù))。
冪等性:冪等,多次請(qǐng)求結(jié)果一致。
適用場(chǎng)景:更新用戶信息、替換文件等。
示例 :
PUT /users/123 HTTP/1.1
Content-Type: application/json
{
"username": "newname",
"email": "new@example.com"
}4. DELETE (刪除數(shù)據(jù))
作用:從服務(wù)器刪除指定的資源
參數(shù)位置:資源通過(guò) URL 指定。
請(qǐng)求體:通常無(wú)請(qǐng)求體。
冪等性:冪等,多次請(qǐng)求結(jié)果相同(資源被刪除)。
適用場(chǎng)景:刪除用戶、刪除文件等。
示例:
DELETE /users/123 HTTP/1.1
總結(jié)對(duì)比表
| 方法 | 作用 | 請(qǐng)求體 | 冪等性 | 適用場(chǎng)景 |
|---|---|---|---|---|
| GET | 查詢數(shù)據(jù) | 無(wú) | 是 | 獲取數(shù)據(jù),例如用戶信息。 |
| POST | 創(chuàng)建資源 | 有 | 否 | 創(chuàng)建新資源,例如新增用戶。 |
| PUT | 更新(或創(chuàng)建)資源 | 有(完整資源數(shù)據(jù)) | 是 | 更新或替換資源,例如修改用戶。 |
| DELETE | 刪除資源 | 無(wú)(一般) | 是 | 刪除指定資源,例如刪除用戶。 |
簡(jiǎn)單來(lái)說(shuō):
- GET = 查。
- POST = 增。
- PUT = 改(或覆蓋)。
- DELETE = 刪。
四、HTTP狀態(tài)碼合集
| 狀態(tài)碼 | 編碼 | 描述 |
|---|---|---|
| 1xx 信息性響應(yīng) | ||
| 100 | Continue | 繼續(xù),客戶端應(yīng)繼續(xù)其請(qǐng)求 |
| 101 | Switching Protocols | 服務(wù)器正在切換協(xié)議 |
| 102 | Processing | 服務(wù)器已收到請(qǐng)求,但尚未處理完成(WebDAV) |
| 103 | Early Hints | 預(yù)加載資源的早期提示 |
| 2xx 成功響應(yīng) | ||
| 200 | OK | 請(qǐng)求成功 |
| 201 | Created | 請(qǐng)求成功并創(chuàng)建了資源 |
| 202 | Accepted | 請(qǐng)求已接受,但尚未處理完成 |
| 203 | Non-Authoritative Information | 請(qǐng)求成功,但返回的內(nèi)容可能來(lái)自第三方 |
| 204 | No Content | 請(qǐng)求成功,但沒(méi)有返回內(nèi)容 |
| 205 | Reset Content | 請(qǐng)求成功,客戶端應(yīng)重置文檔視圖 |
| 206 | Partial Content | 服務(wù)器成功處理了部分請(qǐng)求(斷點(diǎn)續(xù)傳) |
| 207 | Multi-Status | 返回多個(gè)狀態(tài)碼(WebDAV) |
| 208 | Already Reported | 資源已被報(bào)告(WebDAV) |
| 226 | IM Used | 服務(wù)器已完成 GET 請(qǐng)求,并使用了實(shí)例操作 |
| 3xx 重定向 | ||
| 300 | Multiple Choices | 請(qǐng)求有多個(gè)可能的響應(yīng) |
| 301 | Moved Permanently | 資源已永久移動(dòng) |
| 302 | Found | 資源暫時(shí)移動(dòng)(以前叫“Moved Temporarily”) |
| 303 | See Other | 資源可在另一個(gè) URL 獲取 |
| 304 | Not Modified | 資源未修改,可使用緩存 |
| 305 | Use Proxy | 必須通過(guò)代理訪問(wèn)(已廢棄) |
| 306 | Switch Proxy | 該狀態(tài)碼已被廢棄 |
| 307 | Temporary Redirect | 臨時(shí)重定向,請(qǐng)求方法不變 |
| 308 | Permanent Redirect | 永久重定向,請(qǐng)求方法不變 |
| 4xx 客戶端錯(cuò)誤 | ||
| 400 | Bad Request | 客戶端請(qǐng)求格式錯(cuò)誤 |
| 401 | Unauthorized | 需要身份驗(yàn)證 |
| 402 | Payment Required | 預(yù)留狀態(tài)碼,未廣泛使用 |
| 403 | Forbidden | 服務(wù)器拒絕請(qǐng)求 |
| 404 | Not Found | 請(qǐng)求的資源不存在 |
| 405 | Method Not Allowed | 請(qǐng)求方法被禁止 |
| 406 | Not Acceptable | 服務(wù)器無(wú)法滿足請(qǐng)求的內(nèi)容格式 |
| 407 | Proxy Authentication Required | 需要代理身份驗(yàn)證 |
| 408 | Request Timeout | 請(qǐng)求超時(shí) |
| 409 | Conflict | 資源沖突(例如并發(fā)修改) |
| 410 | Gone | 資源已永久刪除 |
| 411 | Length Required | 需要指定 Content-Length |
| 412 | Precondition Failed | 請(qǐng)求頭條件失敗 |
| 413 | Payload Too Large | 請(qǐng)求體過(guò)大,服務(wù)器無(wú)法處理 |
| 414 | URI Too Long | 請(qǐng)求的 URI 過(guò)長(zhǎng) |
| 415 | Unsupported Media Type | 不支持的媒體類型 |
| 416 | Range Not Satisfiable | 請(qǐng)求的范圍無(wú)效 |
| 417 | Expectation Failed | 服務(wù)器無(wú)法滿足 Expect 頭的要求 |
| 418 | I’m a teapot | 傳統(tǒng)愚人節(jié)彩蛋,表示“我是一個(gè)茶壺” |
| 421 | Misdirected Request | 請(qǐng)求被發(fā)送到錯(cuò)誤的服務(wù)器 |
| 422 | Unprocessable Entity | 請(qǐng)求格式正確,但無(wú)法處理(WebDAV) |
| 423 | Locked | 資源被鎖定(WebDAV) |
| 424 | Failed Dependency | 依賴的請(qǐng)求失?。╓ebDAV) |
| 425 | Too Early | 服務(wù)器拒絕處理可能被重放的請(qǐng)求 |
| 426 | Upgrade Required | 需要升級(jí)協(xié)議 |
| 428 | Precondition Required | 需要前置條件 |
| 429 | Too Many Requests | 客戶端發(fā)送的請(qǐng)求過(guò)多(限流) |
| 431 | Request Header Fields Too Large | 請(qǐng)求頭字段太大 |
| 451 | Unavailable For Legal Reasons | 由于法律原因不可用 |
| 5xx 服務(wù)器錯(cuò)誤 | ||
| 500 | Internal Server Error | 服務(wù)器內(nèi)部錯(cuò)誤 |
| 501 | Not Implemented | 服務(wù)器不支持該請(qǐng)求 |
| 502 | Bad Gateway | 服務(wù)器作為網(wǎng)關(guān)時(shí),收到無(wú)效響應(yīng) |
| 503 | Service Unavailable | 服務(wù)器暫時(shí)不可用(過(guò)載或維護(hù)) |
| 504 | Gateway Timeout | 服務(wù)器作為網(wǎng)關(guān)時(shí),未及時(shí)收到上游服務(wù)器響應(yīng) |
| 505 | HTTP Version Not Supported | 服務(wù)器不支持該 HTTP 版本 |
| 506 | Variant Also Negotiates | 服務(wù)器內(nèi)部配置錯(cuò)誤 |
| 507 | Insufficient Storage | 服務(wù)器存儲(chǔ)空間不足(WebDAV) |
| 508 | Loop Detected | 服務(wù)器檢測(cè)到無(wú)限循環(huán)(WebDAV) |
| 510 | Not Extended | 服務(wù)器需要擴(kuò)展請(qǐng)求 |
| 511 | Network Authentication Required | 需要網(wǎng)絡(luò)身份驗(yàn)證 |
這個(gè)表格已經(jīng)經(jīng)過(guò)核對(duì),符合最新的 HTTP 標(biāo)準(zhǔn)。
到此這篇關(guān)于HTTP4種方法(GET、POST、 PUT和DELETE)的文章就介紹到這了,更多相關(guān)http get post put delete內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Vue框架vux組件庫(kù)實(shí)現(xiàn)上拉刷新功能
這篇文章主要為大家詳細(xì)介紹了基于Vue框架vux組件庫(kù)實(shí)現(xiàn)上拉刷新功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
vue本地運(yùn)行訪問(wèn)不到public目錄下的文件問(wèn)題
文章介紹了如何在Vue項(xiàng)目中使用TinyMCE開發(fā)富文本編輯器,并詳細(xì)描述了配置語(yǔ)言包和樣式屬性的步驟,同時(shí),文章還提到了在不同環(huán)境(測(cè)試和正式)中切換公共路徑配置的方法2025-10-10
vue中this.$refs.name.offsetHeight獲取不到值問(wèn)題
這篇文章主要介紹了vue中this.$refs.name.offsetHeight獲取不到值問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Vue2.0 實(shí)現(xiàn)歌手列表滾動(dòng)及右側(cè)快速入口功能
這篇文章主要介紹了Vue2.0實(shí)現(xiàn)歌手列表滾動(dòng)及右側(cè)快速入口功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
淺談el-table中使用虛擬列表對(duì)對(duì)表格進(jìn)行優(yōu)化
我們會(huì)經(jīng)常使用表格,如果數(shù)據(jù)量大就直接可以分頁(yè),如果多條可能會(huì)影響表格的卡頓,那么應(yīng)該如何進(jìn)行優(yōu)化,感興趣的可以了解一下2021-08-08
vue實(shí)現(xiàn)一個(gè)簡(jiǎn)單的分頁(yè)功能實(shí)例詳解
這篇文章主要介紹了vue實(shí)現(xiàn)一個(gè)簡(jiǎn)單的分頁(yè)功能,需要的朋友可以參考下2022-12-12
基于vue實(shí)現(xiàn)頁(yè)面滾動(dòng)加載的示例詳解
頁(yè)面內(nèi)容太多會(huì)導(dǎo)致加載速度過(guò)慢,這時(shí)可考慮使用滾動(dòng)加載即還沒(méi)有出現(xiàn)在可視范圍內(nèi)的內(nèi)容塊先不加載,出現(xiàn)后再加載,所以本文給大家介紹了基于vue實(shí)現(xiàn)頁(yè)面滾動(dòng)加載的示例,需要的朋友可以參考下2024-01-01
vue項(xiàng)目配置element-ui容易遇到的坑及解決
這篇文章主要介紹了vue項(xiàng)目配置element-ui容易遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

