什麼是RESTful API

RESTful API是利用HTTP請求訪問或使用數據的應用程序接口(API)的體系結構樣式。這些數據可用於GET,PUT,POST和DELETE數據類型,這些數據類型指的是與資源相關的操做讀取、更新、建立和刪除。
編程

網站的API是容許兩個軟件程序相互通訊的代碼。API詳細說明了開發人員編寫從操做系統或其餘應用程序請求服務程序的正確方法。json

RESTful API(也稱爲RESTful Web服務或REST API)基於表示性狀態轉移(REST),它是Web服務開發中常用的一種體系結構樣式和通訊方式。api

REST技術一般優於其餘相似技術。這是由於REST使用較少的帶寬,使其更適合高效的互聯網使用。RESTful API也能夠用JavaScript或Python之類的編程語言來構建。數組

瀏覽器使用的REST能夠被視爲互聯網語言。隨着雲使用量的興起,雲消費者正在使用API公開和組織對Web服務的訪問。REST是構建API的邏輯選擇,它容許用戶在分佈式環境中靈活地鏈接、管理和交互雲服務。瀏覽器

RESTful API如何工做

RESTful API使用分解事務來建立一系列小模塊。每一個模塊處理事務的一個底層部分。這種模塊化爲開發人員提供了很大的靈活性,可是對於開發人員來講,從頭開始設計REST API是一個挑戰。目前,有幾家公司提供了供開發人員使用的工具,例如本文演示工具EOLINKER:www.eolinker.com
緩存

RESTful API使用命令來獲取資源。資源在任何給定時間戳下的狀態稱爲表示資源(resource representation)。RESTful API使用RFC 2616協議定義的現有HTTP方法,例如:安全

GET檢索資源;
PUT更改狀態或更新資源的狀態,該資源能夠是對象,文件或塊;
POST建立該資源;
DELETE刪除資源。
使用REST,網絡化組件是用戶請求訪問的資源,全部調用都是無狀態的;RESTful服務在執行之間不能保留任何內容。服務器

REST API支持的數據格式包括:
application/ json
application/ xml
application/ x-www-form-urlencoded
multipart/form-data
restful

用途

因爲調用是無狀態的,所以REST在雲應用程序中頗有用。若是出現故障,無狀態組件能夠自由地從新部署,它們能夠擴展適應負載變化。由於任何請求均可以定向到組件的任何實例,下一個事務沒必要記住任何保存的內容。這使得REST更適合用於Web。RESTful模型在雲服務中也頗有用,由於經過API綁定到服務是控制URL解碼方式的問題。網絡

RESTful API設計和架構約束

RESTful API設計由Roy Fielding在2000年的博士學位論文中定義。爲了成爲真正的RESTful API,Web服務必須遵照如下六個REST體系結構約束:

使用統一接口(UI)。資源應該經過單個URL進行惟一標識,而且只有經過使用網絡協議的底層方法(例如帶HTTP的DELETE,PUT和GET),才能對資源進行操做。

基於客戶端服務器。客戶端和服務器之間應該要清晰劃分。UI和請求收集問題是客戶端的領域。數據訪問、工做負載管理和安全性是服務器的領域。客戶端和服務器的這種鬆散耦合使得彼此之間能夠獨立開發。

無狀態操做。全部客戶端-服務器操做都應該是無狀態的,而且所需的任何狀態管理都應該在客戶端進行而不是服務器上。

RESTful資源緩存。除非明確指出不可能進行緩存,不然全部資源都應容許緩存。

分層系統。REST支持由多層服務器組成的體系結構。

按需編碼。大多數時候,服務器會以XML或JSON的形式發送回資源的靜態表示。可是,必要時服務器能夠向客戶端發送可執行代碼。

常見的REST API挑戰

除了設計和體系結構的約束外,我的還必須面對REST API的一些挑戰。可能具備挑戰性的一些概念可能包括:

端點一致性。

API版本控制。

響應時間長,數據太多。

安全性。須要注意不少方面,包括使用如下方面:
HTTPS;
阻止來自未知IP地址和域的訪問;
驗證URL;
阻止意外的大有效載荷;
記錄請求;
檢查故障。

身份驗證。使用常見的身份驗證方法,例如HTTP基自己份驗證(容許使用base64編碼的用戶名:密碼字符串),API密鑰,JSON Web Token和其餘訪問令牌。例如,OAuth 2.0適用於訪問控制。

API測試。測試過程當中可能具備挑戰性的部分包括:
初始設置
架構更新
測試參數組合
序列API調用
驗證測試參數
系統集成

定義錯誤代碼和消息。
對於錯誤代碼,使用標準HTTP錯誤代碼是更常見的作法。錯誤處理除了解析正文或檢查錯誤外,可能沒有其餘方法來區分響應是否成功。

隨着時間推移的,開發人員開始使用RESTful API,並使用它們爲網站和應用程序添加功能。現在,REST API被認爲是「互聯網的骨幹」。

相關文章
相關標籤/搜索