最近一直看這方面的東西,總結如下:
在後續會進行例項demo演示,本篇進行理論詳解。
《web api 內部資料思考 和 利用http快取優化 api》
《api介面安全加強設計方法》
一 什麼是web api ?
二 什麼是api端點 ?
端點是指用於訪問api的uri,由不同的功能而擁有不同的端點。以獲取使用者資訊為例,可以分配如下uri
三 url和uri有什麼區別?uri,是uniform resource identifier,統一資源識別符號,用來唯一的標識乙個資源。而url是uniform resource locator,統一資源定位器,它是一種具體的uri,即url可以用來標識乙個資源,而且還指明了如何locate這個資源。也就是說,uri是以一種抽象的,高層次概念定義統一資源標識,而url則是具體的資源標識的方式。url是一種uri。
四 端點的基本設計
1 容易記憶,uri包含的功能一目了然
a) 短小便於輸入的uri
簡單易記,例如:
這個uri不好的地方在於:
1)網域名稱和路徑都包含api,重複 。
2)service 表示服務,似乎無關緊要
可以簡寫為:
當然,可以新增其他區別的路徑名
b)可以讀懂的uri
例如:
http://sv和u是啥?service和user嗎?
c)沒有大小寫混用的uri
在web設計標準一書中,說的是盡量路徑採用小寫
與下面對比
這方面見仁見智
d)修改方便的uri
假設我們需要獲取某種商品(item),例:
可以看到v1為版本號,items為商品,並且可以知道改變id,可以獲取到其他商品
e)不會暴露伺服器架構的uri
例如:
http://這透露api是由php語言編寫且以cgi的方式執行。這是多餘的,對於外界來說,並不需要關心語言和執行方式。也增加了伺服器受攻擊的可能性
f)規則統一的uri
tips:查詢引數放於路徑中:例:
五 登入與oauth2.0官方**: 2/
oauth 2.0是oauth協議的下一版本,但不向後相容oauth 1.0。 oauth 2.0關注客戶端開發者的簡易性,同時為web應用,桌面應用和手機,和起居室裝置提供專門的認證流程。
在oauth2.0的處理流程,主要分為以下四個步驟:
1)得到授權碼code
2)獲取access token
3)通過access token,獲取openid
4)通過access token及openid呼叫api,獲取使用者授權資訊
上面是流程的大概四個步驟,流程圖為:
【摘於網路】
第一步:首先直接跳轉至使用者授權位址,即圖示 request user url ,提示使用者進行登入,並給予相關資源授權,得到唯一的auth code,這裡注意的是code只有10分鐘的有效期;
第二步:得到授權code後,這一步就是請求access token,通過 圖示 request access url ,生成得到資料token;
第三步:通過access token請求openid,openid是使用者在此平台的唯一標識,通過圖示 request info url 請求,然後得到openid;
六 資料格式
無疑,json是最流行的資料格式,其次是xml,同時還有jsonp【不推薦使用,最大的問題在於當伺服器返回錯誤時無法正確應對】,那麼如何指定返回資料格式呢?
1)使用查詢引數的方法,例:
2)使用副檔名的方法,例:
但是此方法並不推薦,靈活性很低
3)使用名為accept的請求首部來指明所需的資料格式,例如:
get /v1/users既然第二種不推薦,那麼可以第一種和第三種結合的方式設計api。host : api.example.com
未完待續。。。。。。
Web Api 端點設計 與 Oauth
最近一直看這方面的東西,總結如下 在後續會進行例項demo演示,本篇進行理論詳解。web api 內部資料思考 和 利用http快取優化 api api介面安全加強設計方法 一 什麼是web api 二 什麼是api端點 端點是指用於訪問api的uri,由不同的功能而擁有不同的端點。以獲取使用者資訊...
獲取與端點的連線
api 文件 點選 在twisted中,我們使用高階抽象的介面在傳輸和接收資料,比如itransport 和 iprotocol。同時,twisted也提供了構建面向資料流連線的端點的介面 istreamserverendpointandistreamclientendpoint。資料流 的意思是指...
建立與使用Web API
今天做了乙個練習,實現單獨的web api project。以前只是在asp.net mvc project內建立。點選ok之後,出現另外乙個視窗 我們在資料庫建立一張表 根據這錶,我們在api project中建立乙個model 接下來,我們可以建立控制器 選擇web api 2 controll...