Web Api 端點設計 與 Oauth

2022-03-23 14:48:39 字數 2890 閱讀 3496

最近一直看這方面的東西,總結如下:

在後續會進行例項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

host : api.example.com

既然第二種不推薦,那麼可以第一種和第三種結合的方式設計api。

未完待續。。。。。。

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...