千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 如何設(shè)計(jì)符合冪等性的高質(zhì)量 RESTful API?

如何設(shè)計(jì)符合冪等性的高質(zhì)量 RESTful API?

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-08-03 11:38:00 1659497880

如何設(shè)計(jì)符合冪等性的高質(zhì)量 RESTful API

  1. HTTP GET vs HTTP POST

  也許,你會想起一個面試題。HTTP 請求的 GET 與 POST 方式有什么區(qū)別? 你可能會回答到:GET 方式通過 URL 提交數(shù)據(jù),數(shù)據(jù)在 URL 中可以看到;POST 方式,數(shù)據(jù)放置在 HTML HEADER 內(nèi)提交。但是,我們現(xiàn)在從 RESTful 的資源角度來看待問題,HTTP GET 方法是冪等的,所以它適合作為查詢操作,HTTP POST 方法是非冪等的,所以用來表示新增操作。

  但是,也有例外,我們有的時候可能需要把查詢方法改造成 HTTP POST 方法。比如,超長(1k)的 GET URL 使用 POST 方法來替代,因?yàn)?GET 受到 URL 長度的限制。雖然,它不符合冪等性,但是它是一種折中的方案。

  2. HTTP POST vs HTTP PUT

  對于 HTTP POST 方法和 HTTP PUT 方法,我們一般的理解是 POST 表示創(chuàng)建資源,PUT 表示更新資源。當(dāng)然,這個是正確的理解。

  但是,實(shí)際上,兩個方法都用于創(chuàng)建資源,更為本質(zhì)的差別是在冪等性。HTTP POST 方法是非冪等,所以用來表示創(chuàng)建資源,HTTP PUT 方法是冪等的,因此表示更新資源更加貼切。

  3. HTTP PUT vs HTTP PATCH

  此時,你看會有另外一個問題。HTTP PUT 方法和 HTTP PATCH 方法,都是用來表述更新資源,它們之間有什么區(qū)別呢?我們一般的理解是 PUT 表示更新全部資源,PATCH 表示更新部分資源。首先,這個是我們遵守的第一準(zhǔn)則。根據(jù)上面的描述,PATCH 方法是非冪等的,因此我們在設(shè)計(jì)我們服務(wù)端的 RESTful API 的時候,也需要考慮。如果,我們想要明確的告訴調(diào)用者我們的資源是冪等的,我的設(shè)計(jì)更傾向于使用 HTTP PUT 方法。

  更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
服務(wù)器為什么要用Linux?

服務(wù)器為什么要用Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,Linux在眾多選擇中脫穎而出。Linux作為服務(wù)器操作系統(tǒng)的優(yōu)選,有其獨(dú)特的優(yōu)勢和特點(diǎn)。包括其...詳情>>

2023-10-14 12:34:11
ORM解決的主要問題是什么?

ORM(對象關(guān)系映射)解決的主要問題是將關(guān)系數(shù)據(jù)庫與面向?qū)ο缶幊讨g的映射困境。在傳統(tǒng)的關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲,而在面向?qū)ο?..詳情>>

2023-10-14 12:26:19
Go為什么不支持三元運(yùn)算符?

Go為什么不支持三元運(yùn)算符Go語言是一種以簡潔和有效性為目標(biāo)的編程語言,因此在設(shè)計(jì)過程中,Go的設(shè)計(jì)者刻意排除了一些他們認(rèn)為可能導(dǎo)致復(fù)雜性或...詳情>>

2023-10-14 12:12:36
IT通常說的平臺是什么意思?

在信息技術(shù)(IT)領(lǐng)域,”平臺”這個詞有著廣泛的含義,它常常指代支持軟件應(yīng)用開發(fā)和運(yùn)行的基礎(chǔ)框架和環(huán)境。以下是對”平臺”這個概念的更深入...詳情>>

2023-10-14 11:55:36
什么是PowerPivot?

什么是PowerPivotPowerPivot,全稱”PowerPivot for Excel”,是Microsoft提供的一種數(shù)據(jù)分析工具,可以作為Excel的插件使用。通過PowerPivot,...詳情>>

2023-10-14 11:25:48