什么是RESTful API
RESTful API是利用HTTP請求訪問或使用數(shù)據(jù)的應(yīng)用程序接口(API)的體系結(jié)構(gòu)樣式。這些數(shù)據(jù)可用于GET,PUT,POST和DELETE數(shù)據(jù)類型,這些數(shù)據(jù)類型指的是與資源相關(guān)的操作讀取、更新、創(chuàng)建和刪除。
網(wǎng)站的API是允許兩個軟件程序相互通信的代碼。API詳細說明了開發(fā)人員編寫從操作系統(tǒng)或其他應(yīng)用程序請求服務(wù)程序的正確方法。
RESTful API(也稱為RESTful Web服務(wù)或REST API)基于表示性狀態(tài)轉(zhuǎn)移(REST),它是Web服務(wù)開發(fā)中經(jīng)常使用的一種體系結(jié)構(gòu)樣式和通信方式。
REST技術(shù)通常優(yōu)于其他類似技術(shù)。這是因為REST使用較少的帶寬,使其更適合高效的互聯(lián)網(wǎng)使用。RESTful API也可以用JavaScript或Python之類的編程語言來構(gòu)建。
瀏覽器使用的REST可以被視為互聯(lián)網(wǎng)語言。隨著云使用量的興起,云消費者正在使用API公開和組織對Web服務(wù)的訪問。REST是構(gòu)建API的邏輯選擇,它允許用戶在分布式環(huán)境中靈活地連接、管理和交互云服務(wù)。
RESTful API如何工作
RESTful API使用分解事務(wù)來創(chuàng)建一系列小模塊。每個模塊處理事務(wù)的一個底層部分。這種模塊化為開發(fā)人員提供了很大的靈活性,但是對于開發(fā)人員來說,從頭開始設(shè)計REST API是一個挑戰(zhàn)。
目前,有幾家公司提供了供開發(fā)人員使用的工具,例如本文演示工具EOLINKER:www.eolinker.com。
RESTful API使用命令來獲取資源。資源在任何給定時間戳下的狀態(tài)稱為表示資源(resource representation)。RESTful API使用RFC 2616協(xié)議定義的現(xiàn)有HTTP方法,例如:
GET檢索資源;
PUT更改狀態(tài)或更新資源的狀態(tài),該資源可以是對象,文件或塊;
POST創(chuàng)建該資源;
DELETE刪除資源。
使用REST,網(wǎng)絡(luò)化組件是用戶請求訪問的資源,所有調(diào)用都是無狀態(tài)的;RESTful服務(wù)在執(zhí)行之間不能保留任何內(nèi)容。
REST API支持的數(shù)據(jù)格式包括:
application/ json
application/ xml
application/ x-www-form-urlencoded
multipart/form-data
用途
由于調(diào)用是無狀態(tài)的,因此REST在云應(yīng)用程序中很有用。如果出現(xiàn)故障,無狀態(tài)組件可以自由地重新部署,它們可以擴展適應(yīng)負載變化。因為任何請求都可以定向到組件的任何實例,下一個事務(wù)不必記住任何保存的內(nèi)容。這使得REST更適合用于Web。RESTful模型在云服務(wù)中也很有用,因為通過API綁定到服務(wù)是控制URL解碼方式的問題。
RESTful API設(shè)計和架構(gòu)約束
RESTful API設(shè)計由Roy Fielding在2000年的博士學(xué)位論文中定義。為了成為真正的RESTful API,Web服務(wù)必須遵守以下六個REST體系結(jié)構(gòu)約束:
使用統(tǒng)一接口(UI)。資源應(yīng)該通過單個URL進行唯一標識,并且只有通過使用網(wǎng)絡(luò)協(xié)議的底層方法(例如帶HTTP的DELETE,PUT和GET),才能對資源進行操作。
基于客戶端服務(wù)器??蛻舳撕头?wù)器之間應(yīng)該要清晰劃分。UI和請求收集問題是客戶端的領(lǐng)域。數(shù)據(jù)訪問、工作負載管理和安全性是服務(wù)器的領(lǐng)域??蛻舳撕头?wù)器的這種松散耦合使得彼此之間可以獨立開發(fā)。
無狀態(tài)操作。所有客戶端-服務(wù)器操作都應(yīng)該是無狀態(tài)的,并且所需的任何狀態(tài)管理都應(yīng)該在客戶端進行而不是服務(wù)器上。
RESTful資源緩存。除非明確指出不可能進行緩存,否則所有資源都應(yīng)允許緩存。
分層系統(tǒng)。REST支持由多層服務(wù)器組成的體系結(jié)構(gòu)。
按需編碼。大多數(shù)時候,服務(wù)器會以XML或JSON的形式發(fā)送回資源的靜態(tài)表示。但是,必要時服務(wù)器可以向客戶端發(fā)送可執(zhí)行代碼。
常見的REST API挑戰(zhàn)
除了設(shè)計和體系結(jié)構(gòu)的約束外,個人還必須面對REST API的一些挑戰(zhàn)。可能具有挑戰(zhàn)性的一些概念可能包括:
端點一致性。
API版本控制。
響應(yīng)時間長,數(shù)據(jù)太多。
安全性。需要注意很多方面,包括使用以下方面:
HTTPS;
阻止來自未知IP地址和域的訪問;
驗證URL;
阻止意外的大有效載荷;
記錄請求;
檢查故障。
身份驗證。使用常見的身份驗證方法,例如HTTP基本身份驗證(允許使用base64編碼的用戶名:密碼字符串),API密鑰,JSON Web Token和其他訪問令牌。例如,OAuth 2.0適用于訪問控制。
API測試。測試過程中可能具有挑戰(zhàn)性的部分包括:
初始設(shè)置
架構(gòu)更新
測試參數(shù)組合
序列API調(diào)用
驗證測試參數(shù)
系統(tǒng)集成
定義錯誤代碼和消息。
對于錯誤代碼,使用標準HTTP錯誤代碼是更常見的做法。錯誤處理除了解析正文或檢查錯誤外,可能沒有其他方法來區(qū)分響應(yīng)是否成功。文章來源:http://www.zghlxwxcb.cn/news/detail-604614.html
隨著時間推移的,開發(fā)人員開始使用RESTful API,并使用它們?yōu)榫W(wǎng)站和應(yīng)用程序添加功能。如今,REST API被認為是“互聯(lián)網(wǎng)的骨干”。文章來源地址http://www.zghlxwxcb.cn/news/detail-604614.html
到了這里,關(guān)于什么是RESTful API的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!