久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

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

手機(jī)站
千鋒教育

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

千鋒教育

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

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

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

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

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

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

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

  1. HTTP GET vs HTTP POST

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

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

  2. HTTP POST vs HTTP PUT

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

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

  3. HTTP PUT vs HTTP PATCH

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

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

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(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)勢(shì)和特點(diǎn)。包括其...詳情>>

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

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

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

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

2023-10-14 12:12:36
IT通常說(shuō)的平臺(tái)是什么意思?

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

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

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

2023-10-14 11:25:48