時(shí)間:2023-08-25 03:48:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-08-25 03:48:01 來源:網(wǎng)站運(yùn)營
一杯咖啡的時(shí)間??,搞懂 API 和 RESTful API?。?h2 data-first-child>?? 前言API
和RESTful API
是每個(gè)程序員都應(yīng)該了解并掌握的基本知識(shí),我們?cè)陂_發(fā)過程中設(shè)計(jì) API
的時(shí)候也應(yīng)該至少要滿足一些最基本的要求。API
或你沒有了解RESTful API
,你可以選擇花5
分鐘時(shí)間看下去,我會(huì)最通俗易懂的幫你普及這一切。 2000
年我們還在用小靈通的時(shí)代,網(wǎng)上購票已經(jīng)慢慢興起,但是絕大部分人出行還是「通過電話查詢航班來去選擇購票」,我們首先需要「打電話」到附近的站臺(tái)根據(jù)時(shí)間「詢問」航班或車次,得到結(jié)果后再去到對(duì)應(yīng)站臺(tái)進(jìn)行購票。App
也映入眼簾,大家也「學(xué)會(huì)了如何在App
上進(jìn)行購票」。App
輸入你的「起點(diǎn)」和「終點(diǎn)」后,會(huì)展現(xiàn)所有符合條件的車次,航班,不僅僅只有時(shí)間、座位,還有航空公司、預(yù)計(jì)時(shí)間等等等等詳細(xì)信息「一目了然」,你只需要根據(jù)你的需求購買即可。App
進(jìn)行購物、閱讀、直播,我們以前所未有的方式和世界與人們相連接。App
能夠這么便利?這些資料為什么會(huì)可以從A
到達(dá)B
,為什么我們只需要?jiǎng)觿?dòng)手指就可以達(dá)到這一切?API
,API
,全名 Application Programming Interface (應(yīng)用程式界面)
,簡(jiǎn)單來說,是品牌開發(fā)的一種接口,讓第三方可以額外開發(fā)、應(yīng)用在自身的產(chǎn)品上的系統(tǒng)溝通界面。API
,他傳達(dá)你的要求到系統(tǒng),而站臺(tái)就是這個(gè)系統(tǒng),比如告訴它查詢明天飛往杭州的飛機(jī),那么他就會(huì)得出結(jié)果,由電話員傳遞給你。API
和航空公司互動(dòng)。API
讓我們使用這些旅游 App
,那么這個(gè)道理也一樣適用于生活中任何應(yīng)用程序、資料和裝置之間的互動(dòng),都有各自的API
進(jìn)行連接。(API)
的要求沒那么高。web
應(yīng)用程序主要是在服務(wù)器端實(shí)現(xiàn)的,因此需要使用復(fù)雜的協(xié)議來操作和傳輸數(shù)據(jù)。然而,隨著移動(dòng)端設(shè)備的普及,需要在移動(dòng)端也能夠訪問 web
應(yīng)用程序,而客戶端和服務(wù)端就需要接口進(jìn)行通信,但接口的規(guī)范性就又成了一個(gè)問題。RESTful
風(fēng)格的接口(RESTful API)
剛好有以上特點(diǎn),就逐漸應(yīng)運(yùn)而生。REST
,全名 Representational State Transfer
(表現(xiàn)層狀態(tài)轉(zhuǎn)移),他是一種「設(shè)計(jì)風(fēng)格」,一種「軟件架構(gòu)風(fēng)格」,而「不是標(biāo)準(zhǔn)」,只是「提供了一組設(shè)計(jì)原則和約束條件」。RESTful
只是轉(zhuǎn)為形容詞,就像那么 RESTful API
就是滿足 REST
風(fēng)格的,以此規(guī)范設(shè)計(jì)的 API
。API
一般都長(zhǎng)這樣子:RESTful
風(fēng)格的 API
卻長(zhǎng)這樣子:Roy Fielding
是 HTTP
協(xié)議的主要設(shè)計(jì)者之一,他在論文中闡述了 REST
架構(gòu)的概念并給出了 REST
架構(gòu)的「六個(gè)限制條件」,也就是「六大原則」。 API
,這是最直觀的特征,是 REST
架構(gòu)的核心,統(tǒng)一的接口對(duì)于 RESTful
服務(wù)非常重要??蛻舳?b>「只需要關(guān)注實(shí)現(xiàn)接口」就可以,接口的「可讀性加強(qiáng)」,使用人員「方便調(diào)用」。RESTful API
通過 URL
定位資源,并通過 HTTP
方法操作該資源,對(duì)資源的操作包括獲取、創(chuàng)建、修改和刪除,這些操作正好對(duì)應(yīng) HTTP
協(xié)議提供的GET
、POST
、PUT
和DELETE
方法。 GET
:獲取資源信息。POST
:創(chuàng)建一個(gè)新資源。PUT
:更新已有的資源。DELETE
:刪除已有的資源。 RESTful
的團(tuán)隊(duì)里,后端只需要告訴前端 /users
這個(gè) API
,前端就應(yīng)該知道: GET /users
GET /users/{id}
POST /users
PUT /users/{id}
DELETE /users/{id}
API
數(shù)量非常多,系統(tǒng)非常復(fù)雜時(shí),RESTful
的好處會(huì)越來越明顯。理解系統(tǒng)時(shí),可以直接圍繞一系列資源來理解和記憶。token
。接下來的所有請(qǐng)求都需要攜帶上這個(gè) token
而不是系統(tǒng)在第一次登錄成功之后記錄了你的狀態(tài)。HTTP
狀態(tài)碼,服務(wù)器可以告訴客戶端這個(gè)數(shù)據(jù)是否可以被緩存。HTTP
響應(yīng)頭中包含一個(gè) Cache-Control
字段,用于告訴客戶端該數(shù)據(jù)可以緩存多長(zhǎng)時(shí)間。這樣可以提高數(shù)據(jù)傳輸?shù)男?,從而降低網(wǎng)絡(luò)帶寬的開銷,加速數(shù)據(jù)的訪問速度。Code on Demand
是可選的,但它可以使 RESTful API
變得更加靈活和可擴(kuò)展。RESTful
風(fēng)格的 API
呢? HTTP
設(shè)計(jì)了很多動(dòng)詞,來標(biāo)識(shí)不同的操作,不同的HTTP請(qǐng)求方法有各自的含義,就像上面所展示的,RESTful API
應(yīng)該使用 HTTP
方法(如 GET、POST、PUT
和 DELETE
)來描述操作。RESTful API
的方法,據(jù)我了解常見的版本控制方式包括: URL
來表示不同的版本,例如 https://api.example.com/api/v1/resources
和 https://api.example.com/api/v2/resources
。Accept
字段來表示版本。https://api.example.com/resources?version=1
和 https://api.example.com/resources?version=2
。API
都各有不同,但我覺得 RESTful API
版本控制的方法要盡可能的簡(jiǎn)單,易于理解和使用直接將版本放到 URL
中,直截了當(dāng),簡(jiǎn)單明了。API
應(yīng)該使用簡(jiǎn)潔明了的 URL
來標(biāo)識(shí)資源,并且在同一個(gè)資源上使用不同的 HTTP
方法來執(zhí)行不同的操作。URL
,形式千奇百怪,不同的開發(fā)者還需要了解文檔才能調(diào)用。RESTful
風(fēng)格的 URL
,形式固定,可讀性強(qiáng),根據(jù)名詞和 HTTP
動(dòng)詞就可以操作這些資源。tips
,如果你遇到了實(shí)在想不到的 URL
,你可以參考github開放平臺(tái) [1],這里面有很多很規(guī)范的 URL
設(shè)計(jì)。HTTP
狀態(tài)碼是 RESTful API
設(shè)計(jì)的重要一環(huán),是表示 API
請(qǐng)求的狀態(tài),用于告知客戶端是否成功請(qǐng)求并處理數(shù)據(jù)。常用的 HTTP
狀態(tài)碼有: 200 OK
:請(qǐng)求成功,表示獲得了請(qǐng)求的數(shù)據(jù)201 Created
:請(qǐng)求成功,表示創(chuàng)建了一個(gè)新的資源204 No Content
:請(qǐng)求成功,表示操作成功,但沒有返回?cái)?shù)據(jù)400 Bad Request
:請(qǐng)求失敗,表示請(qǐng)求格式不正確或缺少必要參數(shù)401 Unauthorized
:請(qǐng)求失敗,表示認(rèn)證失敗或缺少授權(quán)403 Forbidden
:請(qǐng)求失敗,表示沒有訪問權(quán)限404 Not Found
:請(qǐng)求失敗,表示請(qǐng)求的資源不存在500 Internal Server Error
:請(qǐng)求失敗,表示服務(wù)器內(nèi)部錯(cuò)誤JSON
和 XML
。JSON
是現(xiàn)在比較流行的數(shù)據(jù)格式,它是簡(jiǎn)單、輕量、易于解析,并且它有很好的可讀性。XML
也是一種常用的數(shù)據(jù)格式,它的優(yōu)點(diǎn)是比較靈活,并且支持各種數(shù)據(jù)類型。API
,當(dāng)然也就離不開 API
文檔,但是文檔的編寫又成為程序員覺得麻煩事之一,甚至我還看到有公司的的 API
文檔是用 Word
文檔手敲的。API
的軟件,每個(gè)人都有自己的選擇,我給大家推薦一款 API
管理神器 Apifox[2],可以一鍵生成 API
文檔。API
即可生成,現(xiàn)在也支持了「多種導(dǎo)航模式」、「亮暗色模式」、「頂部自定義 Icon
、文案可跳轉(zhuǎn)到你的官網(wǎng)等地址」。RESTful
風(fēng)格的 API
固然很好很規(guī)范,但大多數(shù)互聯(lián)網(wǎng)公司并沒有按照或者完全按照其規(guī)則來設(shè)計(jì),因?yàn)?REST
是一種風(fēng)格,而不是一種約束或規(guī)則,過于理想的 RESTful API
會(huì)付出太多的成本。RESTful API
,請(qǐng)確保它符合您的業(yè)務(wù)需求。例如,如果您的項(xiàng)目需要實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)交互,您可能需要考慮使用其他 API
設(shè)計(jì)方法。API
設(shè)計(jì)方法時(shí)充分考慮您的業(yè)務(wù)需求。此外,您還需要確保 RESTful API
與您的系統(tǒng)架構(gòu)和技術(shù)棧相兼容。通過這些考慮,您可以確保 RESTful API
的正確使用,并且可以實(shí)現(xiàn)更高效和可靠的 API
。API
設(shè)計(jì)也不只是后端的工作,而是一個(gè)產(chǎn)品團(tuán)隊(duì)在產(chǎn)品設(shè)計(jì)上的協(xié)調(diào)工作,應(yīng)該整個(gè)團(tuán)隊(duì)參與。API
與 RESTful API
,在實(shí)際運(yùn)用中,并不是一定要使用這種規(guī)范,但是有 RESTful
標(biāo)準(zhǔn)可以參考,是十分有必要的,希望對(duì)大家有幫助。關(guān)鍵詞:咖啡
客戶&案例
營銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。