什麼是Web API?web
Web API是網絡應用程序接口。包含了普遍的功能,網絡應用經過API接口,能夠實現存儲服務、消息服務、計算服務等能力,利用這些能力能夠進行開發出強大功能的web應用。服務器
分類網絡
請求--響應類的API的典型作法是,經過基於HTTP的Web服務器暴露一個/套接口。API定義一些端點,客戶端發送數據的請求到這些端點,Web服務器處理這些請求,而後返回響應。響應的格式一般是JSON或XML。spa
在這種類型的Web API裏,比較流行的是這三種:REST,RPC和GraphQL。接口
REST全稱是Representational State Transfer 表述性狀態傳遞。REST多是如今最流行的一種Web API。事件
REST的核心就是資源,一個資源就是能夠被標識的實體,它有名稱和地址。事務
REST API就是把數據以資源的形式暴露出來,並使用標準的HTTP方法來表明建立、讀取、更新和刪除資源等事務。資源
Remote Procedure Call。RPC是一種比較簡單的API,客戶端直接會執行另外一個服務器上的代碼。開發
REST是關於資源的,而RPC就是關於動做的。同步
在RPC裏,客戶端一般是把方法名和參數傳遞給服務器,而後服務器返回JSON或XML。
GraphQL 是 API的查詢語言。最近愈來愈火。它由Facebook於2012年開始開發,2015年被開源了。
針對用請求-響應式API,若是服務的數據常常變化,那麼響應就可能沒法保持新鮮了。開發者若是想與變化的數據保持同步,就只能對API進行polling操做了。
可是若是poll的頻率較低,客戶端仍有可能沒法得到從上次poll到如今全部的數據事件。若是poll的頻率較高,還特別浪費資源。
因此咱們須要實時的分享事件的數據,一般使用下面三種機制:WebHook,WebSocket,HTTP Streaming。
WebHook就是一個接收HTTP POST(或GET,PUT,DELETE)的URL。一個實現了WebHook的API提供商就是在當事件發生的時候會向這個配置好的URL發送一條信息。與請求-響應式不一樣,使用WebHook,你能夠實時接受到變化。
WebSocket這個協議,它經過一個TCP協議創建一個雙向全雙工的流式通訊。WebSocket一般用在客戶端和服務器之間的通訊,也能夠用在服務器之間的通訊。
使用請求-響應式API,客戶端發送一個請求,服務器端返回一個響應,這個響應的長度是有限的。
而使用HTTP Streaming,服務器端能夠在一個由客戶端打開的長生存的鏈接裏持續的推送新數據。