restful風(fēng)格的api接口?如何理解restful風(fēng)格接口
夕逆IT
- 數(shù)據(jù)庫
- 2023-08-13 10:45:12
- 391

大家好,今天給各位分享restful風(fēng)格的api接口的一些知識(shí),其中也會(huì)對(duì)如何理解restful風(fēng)格接口進(jìn)行解釋,文章篇幅可能偏長,如果能碰巧解決你現(xiàn)在面臨的問題,別忘...
大家好,今天給各位分享restful風(fēng)格的api接口的一些知識(shí),其中也會(huì)對(duì)如何理解restful風(fēng)格接口進(jìn)行解釋,文章篇幅可能偏長,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在就馬上開始吧!
restful接口和普通接口有啥區(qū)別
1、功能不同
restfulapi:restfulAPI是當(dāng)作資源的唯一標(biāo)識(shí)符。
傳統(tǒng)api:傳統(tǒng)API是為了實(shí)現(xiàn)某種功能。
2、methods多樣性不同
restfulapi:RestfulAPImethods:
post創(chuàng)建數(shù)據(jù)
get獲取數(shù)據(jù)
put/patch是更新數(shù)據(jù)
delete是刪除數(shù)據(jù)
傳統(tǒng)api:傳統(tǒng)API只有g(shù)et獲取數(shù)據(jù),其他都是POST解決。
3、接口不同
restfulapi:restfulAPI遵循統(tǒng)一接口的原則,禁止在API中使用自接口或多個(gè)接口。理想情況下,超媒體連接應(yīng)用于分發(fā)單個(gè)接口。它還應(yīng)確保類似的數(shù)據(jù)片段(例如,用戶名或電子郵件地址)僅屬于一個(gè)統(tǒng)一資源標(biāo)識(shí)符(URI)。因此,無論初始請(qǐng)求如何,對(duì)相同資源的所有API請(qǐng)求都應(yīng)看起來相同。簡化了API接口的操作性和統(tǒng)一性:
api/file只需要這一個(gè)接口
GET方式請(qǐng)求api/file–獲取文件信息,下載文件
POST方式請(qǐng)求api/file–上傳創(chuàng)建文件
DELETE方式請(qǐng)求api/file–刪除某個(gè)文件
傳統(tǒng)api:傳統(tǒng)接口:
api/getfile.php–獲取文件信息,下載文件
api/uploadfile.php–上傳創(chuàng)建文件
api/deletefile.php–刪除文件
4、結(jié)構(gòu)不同
restfulapi:restfulapi嚴(yán)格地在客戶端和服務(wù)器的Web概念上運(yùn)行??蛻舳撕头?wù)器彼此分離,提供了更大的靈活性。
傳統(tǒng)api:在結(jié)構(gòu)上,大多數(shù)API遵循應(yīng)用程序–應(yīng)用程序格式。
5、設(shè)計(jì)不同
restfulapi:restfulapi通過系統(tǒng)進(jìn)行通信,使其成為一個(gè)復(fù)雜的架構(gòu)。
傳統(tǒng)api:API是輕量級(jí)體系結(jié)構(gòu),專為限制在智能手機(jī)等設(shè)備上的小工具而設(shè)計(jì)。
6、協(xié)議不同
restfulapi:restfulapi是一種架構(gòu)風(fēng)格,用于構(gòu)建通過HTTP協(xié)議進(jìn)行交互的Web服務(wù)。盡管restfulapi是由計(jì)算機(jī)科學(xué)家RoyFielding在2000年制定的,但它仍然是公共API的黃金標(biāo)準(zhǔn)。
傳統(tǒng)api:API的主要目標(biāo)是標(biāo)準(zhǔn)化Web服務(wù)之間的數(shù)據(jù)交換。根據(jù)API的類型,協(xié)議的選擇會(huì)發(fā)生變化。
7、支持不同
restfulapi:即使用戶不知道函數(shù)名稱和參數(shù)的特定順序,也會(huì)執(zhí)行相比之下,即使用戶不知道函數(shù)名稱和參數(shù)的特定順序,也會(huì)執(zhí)行restfulAPI。
傳統(tǒng)api:大多數(shù)API都很容易實(shí)現(xiàn),因?yàn)樗鼈儾粫?huì)面臨無狀態(tài)。
8、可擴(kuò)展性不同
restfulapi:RESTAPI具有分層結(jié)構(gòu),使得RESTAPI模塊化,并且更靈活地實(shí)現(xiàn)可擴(kuò)展性。
傳統(tǒng)api:可擴(kuò)展性是通用API的一個(gè)問題。
API是一個(gè)更大的保護(hù)傘,restfulAPI是移動(dòng)和云應(yīng)用程序中普遍存在的獨(dú)特類型的API。沒有一個(gè)API是沒有缺點(diǎn)的,但新的開發(fā)人員發(fā)現(xiàn)restfulAPI很困難,因?yàn)樗鼰o法在會(huì)話中保持狀態(tài)。隨著現(xiàn)代API成為符合特定標(biāo)準(zhǔn)和特定受眾的產(chǎn)品,企業(yè)已迅速改進(jìn)其用戶界面。
Rest和Restful協(xié)議有什么區(qū)別
隨著這幾年微服務(wù)概念的興起,另一個(gè)名詞出現(xiàn)在了我們面前,那就是RESTful。而現(xiàn)在很多第三方開放平臺(tái)的API都是RESTful風(fēng)格的API,而作為開發(fā)人員也經(jīng)常聽人說起RESTful,但很多人并不清楚什么是RESTful。
先說說RESTREST這個(gè)名詞請(qǐng)一定要全部大寫,它可不是我們英文中所說的Rest!REST這個(gè)概念是在2010年提出的,是HTTP協(xié)議的一位主要設(shè)計(jì)者的提出的RepresentationalStateTransfer(表現(xiàn)層狀態(tài)轉(zhuǎn)化)思想。REST概念的提出者認(rèn)為改變應(yīng)用的互動(dòng)風(fēng)格比改變互動(dòng)協(xié)議對(duì)整體表現(xiàn)有更大的影響,這就稱之為表現(xiàn)層狀態(tài)轉(zhuǎn)化,即REST。
請(qǐng)注意,REST它只是一種架構(gòu)思想!
有了REST才有了RESTful如果一個(gè)架構(gòu)符合REST原則(思想),我們就稱之為是RESTful架構(gòu)風(fēng)格。請(qǐng)注意,RESTful不是協(xié)議!不是協(xié)議!RESTful它只是一種架構(gòu)設(shè)計(jì)風(fēng)格,嚴(yán)格意義上說也不能稱為是規(guī)范,因?yàn)镽ESTful本身就沒有明確的規(guī)范,只要是符合REST思想的架構(gòu)風(fēng)格都可以稱之為是RESTful。
RESTful的本質(zhì)上面說到了,REST代表的就是表現(xiàn)層狀態(tài)轉(zhuǎn)化,這個(gè)“表現(xiàn)層”狀態(tài)該如何轉(zhuǎn)化呢?RESTful本質(zhì)上是基于HTTP的,以不同的HTTP動(dòng)詞來訪問資源,再以Json對(duì)象返回結(jié)果。重點(diǎn)來了,我們以不同的HTTP動(dòng)詞來代表不同的操作類型,如:GET(請(qǐng)求)、POST(創(chuàng)建)、PUT(更新)、DELETE(刪除),所以表現(xiàn)層的狀態(tài)轉(zhuǎn)化實(shí)質(zhì)上靠的是HTTP動(dòng)詞來實(shí)現(xiàn)的。
RESTfulAPI調(diào)用和以前傳統(tǒng)的WEBAPI調(diào)用模式一樣,只不過以前的WEBAPI調(diào)用方法基本上只有兩種:GET、POST。
以上就是我的觀點(diǎn),對(duì)于這個(gè)問題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流~我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!如何寫好API接口文檔
日常項(xiàng)目開發(fā)的過程中,接口文檔是必不可少的。后端工程師與前端工程師之間需要接口文檔來定義數(shù)據(jù)傳輸協(xié)議、系統(tǒng)對(duì)外暴露接口需要文檔來說明、系統(tǒng)之間相互調(diào)用需要文檔來記錄接口協(xié)議等等。對(duì)于一個(gè)完整的項(xiàng)目,接口文檔是至關(guān)重要的。那我們?nèi)绾螌懞靡环萁涌谖臋n呢?今天就讓我們說一說接口文檔幾個(gè)重要的要素。
1、接口概述接口概述主要說明本接口文檔涉及到的業(yè)務(wù)功能點(diǎn),面向的閱讀對(duì)象以及接口文檔主要包括哪些業(yè)務(wù)的接口,可以讓讀者有一個(gè)直觀的認(rèn)識(shí)。如:本文檔定義了中臺(tái)系統(tǒng)面向外部接入方的數(shù)據(jù)協(xié)議接口,主要包括:用戶注冊(cè)接口、同步用戶、授權(quán)認(rèn)證等接口。適合閱讀的對(duì)象為接入中臺(tái)開發(fā)者或者外部合作方…。這樣的一段描述,對(duì)于閱讀者來說可以對(duì)整個(gè)接口文檔有一個(gè)大概的認(rèn)識(shí)。
2、權(quán)限說明有的接口調(diào)用需要授權(quán)認(rèn)證,在這部分需要進(jìn)行說明。如果接口只是基于分配的token認(rèn)證,那文檔需要說明token的獲取方式。如果接口需要進(jìn)行簽名認(rèn)證,需要在這里說明簽名的具體方法,如下圖:
sign參數(shù)的生成規(guī)則要具體說明,最好能示例說明,如:
這樣接入方可以驗(yàn)證自己的簽名方式是否正確。
3、編碼方式接口的請(qǐng)求過程中可能由于編碼導(dǎo)致亂碼,所以,接口必須約定編碼方式,參考以下寫法:
4、請(qǐng)求說明接口文檔的請(qǐng)求說明中主要說明接口請(qǐng)求的域名以及請(qǐng)求的數(shù)據(jù)格式:如
5、接口列表接口列表是接口文檔的主要內(nèi)容,這部分內(nèi)容需要列出所有的接口名稱、接口地址、接口的請(qǐng)求方式、接口的請(qǐng)求參數(shù)以及響應(yīng)格式。在接口的請(qǐng)求參數(shù)中我們需要說明每個(gè)參數(shù)的含義、類型以及是否必須等屬性。對(duì)于接口響應(yīng)結(jié)果,如果有業(yè)務(wù)字段,也需要進(jìn)行說明。下面是一個(gè)比較完整的示例:
6、狀態(tài)碼說明接口的響應(yīng)體一般都會(huì)帶有響應(yīng)的狀態(tài)碼,例如成功、失敗等。狀態(tài)碼有助于接入方進(jìn)行接口調(diào)用狀態(tài)的判斷。如:
接口文檔如果能體現(xiàn)出以上幾個(gè)要素,那可以算是一個(gè)完整的接口文檔,對(duì)于接入方來說可以很好的閱讀理解。
如何調(diào)用別人的RESTful接口
我們常說的“接口”其實(shí)就是指API(應(yīng)用程序編程接口),API通俗的說就是將某個(gè)服務(wù)以特定形式封裝起來供他人便捷的調(diào)用,以此使調(diào)用方獲得此服務(wù)的能力,而不需要了解此服務(wù)內(nèi)部細(xì)節(jié)是如何實(shí)現(xiàn)的。
什么是RESTful接口?RESTful是當(dāng)前流行的API設(shè)計(jì)風(fēng)格,請(qǐng)注意它不是協(xié)議!另外它從嚴(yán)格意義上說它也不能稱之為是規(guī)范,因?yàn)槟壳癛ESTful沒有明確的規(guī)范,我們更傾向于稱它是一種設(shè)計(jì)風(fēng)格和約束。
RESTful并不是一個(gè)新的技術(shù),它是基于HTTP協(xié)議的,只不過在請(qǐng)求API時(shí)以不同的HTTP動(dòng)詞來代表操作類型,結(jié)果返回的是Json對(duì)象數(shù)據(jù)。
常見的HTTP動(dòng)詞代表的含義有:GET(讀?。OST(新建)、PUT(更新)、DELETE(刪除),這些動(dòng)詞足以代表數(shù)據(jù)的不同操作類型,所以說RESTful風(fēng)格的API是簡單明了,具備語義性的。
如何調(diào)用RESTful接口?RESTful風(fēng)格調(diào)用是很簡單的,因?yàn)樗举|(zhì)上就是基于HTTP協(xié)議的。任何開發(fā)語言,都有HTTP請(qǐng)求的類庫(HttpClient),比如PHP中有cURL、file_get_contents等,我們調(diào)用RESTfulAPI其實(shí)就是發(fā)起了一個(gè)HTTP請(qǐng)求而以。
比如說通過某個(gè)API進(jìn)行數(shù)據(jù)查詢,那就以GET方式請(qǐng)求RESTfulAPI,我們甚至可以直接通過URL來訪問此API,是不是感覺很簡單?
以上就是我的觀點(diǎn),對(duì)于這個(gè)問題大家是怎么看待的呢?歡迎在下方評(píng)論區(qū)交流~我是科技領(lǐng)域創(chuàng)作者,十年互聯(lián)網(wǎng)從業(yè)經(jīng)驗(yàn),歡迎關(guān)注我了解更多科技知識(shí)!restfulapi接口規(guī)范
可以提供一些關(guān)于restfulapi接口規(guī)范的建議:
1.使用HTTP方法:使用GET、POST、PUT、DELETE等HTTP方法來實(shí)現(xiàn)不同的操作,比如GET用于查詢、POST用于新增等。
2.使用URL來標(biāo)識(shí)資源:使用URL來標(biāo)識(shí)唯一的資源,比如/api/users/123表示查詢id為123的用戶信息。
3.返回狀態(tài)碼:使用HTTP狀態(tài)碼來表示操作的結(jié)果,比如200表示成功、400表示請(qǐng)求有誤、404表示資源不存在等。
4.使用JSON格式返回?cái)?shù)據(jù):使用JSON格式來返回?cái)?shù)據(jù),可以方便地轉(zhuǎn)換為各種數(shù)據(jù)類型,比如JavaScript對(duì)象。
5.使用版本控制:使用版本控制來管理不同版本的API,以便實(shí)現(xiàn)向后兼容。
6.使用SSL/TLS保護(hù)數(shù)據(jù)傳輸:使用SSL/TLS來加密通信,以保護(hù)數(shù)據(jù)傳輸?shù)陌踩浴?/p>
7.使用OAuth2.0授權(quán)機(jī)制:使用OAuth2.0來實(shí)現(xiàn)授權(quán)機(jī)制,以保護(hù)API的安全性。
restful優(yōu)缺點(diǎn)
restful的優(yōu)缺點(diǎn)如下:1.優(yōu)點(diǎn):簡單高效、易于擴(kuò)展、與不同語言和技術(shù)棧的框架無關(guān)、易于緩存,可以提升性能、可以使用不同的數(shù)據(jù)格式等優(yōu)點(diǎn),使得restful風(fēng)格適用于很多web應(yīng)用程序設(shè)計(jì)中。2.缺點(diǎn):REST的限制也可能會(huì)成為它的缺點(diǎn),一些復(fù)雜的API需要許多自定義操作,而REST的規(guī)范中可能無法定義。此外,由于REST沒有明確的標(biāo)準(zhǔn),因此不同的應(yīng)用程序開發(fā)人員可能會(huì)根據(jù)自己的經(jīng)驗(yàn)和理解實(shí)現(xiàn)自己的RESTAPI,這可能導(dǎo)致不同的開發(fā)者之間出現(xiàn)對(duì)RESTAPI的理解差異,使得API無法保持兼容性和互操作性。
關(guān)于restful風(fēng)格的api接口到此分享完畢,希望能幫助到您。
本文鏈接:http://xinin56.com/su/686.html