記一次RESTful api學習

REST是什麼?
萬維網軟件架構風格,即創建網絡服務的
Representational            State                               Tranfer
數據的表現形式(xml..)        當前狀態或者數據(名字,表等)           數據傳輸

REST六個限制
1.客戶端-服務器(client-server)
    關注點分離:服務端專注數據存儲,提升了簡單性
               前端專注用戶界面,提升了可移植性
2.無狀態(stateless)
所有會話信息都保存在客戶端,每次請求必須包括所有信息,不能依賴上下文信息
好處是:服務器不用保存會話信息,提升了簡單性,可靠性,可見性
簡單性:服務端不需要寫前端的邏輯, 專注後端代碼,更加簡單
可靠性:服務端一旦出現問題,保存的會話信息就會全部丟失,導致不可靠
可見性:每次請求必須包括所有信息,接口之間更加透明,很多信息傳給後端

3.緩存(cache)
所有服務器響應都要被標記爲可緩存或者不可緩存
緩存:變化性不大的文件,如css,html就可以緩存,常變的接口不能緩存
緩存的作用:減少前後端交互,提升性能

4.統一接口(Uniform Interface)
統一:接口設計儘可能統一通用,提升了簡單性,可見性
    接口的設計要規範統一,如同學校的學生穿上校服一樣
簡單性:學會了一個接口,學其他的很快上手,也更加透明
接口:接口與實現解耦,使前後端可以獨立開發迭代
     
5.分層系統(Layered System)
每層只知道相鄰的一層,後面隱藏的就不知道了
比如客戶端不知道自己在和代理通信還是真實服務器通信
其他層:安全層,負載均衡,緩存層等

6.按需代碼(Code-On--Demand 可選)
客戶端可以下載運行服務器傳來的代碼,如js

 


統一接口的限制
1.資源的標識
資源是任何可以命名的事物,比如用戶,評論等
每個資源都可以被URI唯一標識
    https://xxx.xxx.xxx/users
2.通過表述來操作資源
表述就是Representation,如JSON,XML等
客戶端只能通過表述操作資源

3.自描述信息
每個消息(請求或者響應)必須提供足夠的信息讓接收者理解
如媒體類型(application/json),HTTP方法(get, post, delete),是否緩存:Cache-control

4.超媒體作爲應用引擎
超媒體:帶文字的鏈接
應用狀態:一個網頁
引擎:驅動,跳轉
意爲:點擊鏈接跳轉到另一個頁面

                            RESTful API
符合REST架構風格的API
包含三方面:
1.基本URI:https://api.github.com//users
2.標準HTTP方法:GET,POST,DELETE,PUT,PUSH
3.傳輸的數據媒體類型:JSON,xml
現實舉例:
Get users/#
POST users/api


請求設計規範
URI使用名詞,儘量使用複數 如/users
URI使用嵌套表關聯關係 /user/12/repos/5
使用正確的HTTP方法
不符合CURD的情況:POST/action/子資源  action:查詢字符串,
    如轉移倉庫transfer   POST /xx/:repo/transfer

響應設計規範
查詢    分頁    字段過濾    狀態碼  錯誤處理    

安全
Https   鑑權    限流

koa:
註冊路由:
app.use(router.routes()) //由router返回的routes()中間件註冊

const usersRouter = new  Router({prefix:'/users'}) //添加前綴

options作用
options是個請求方法
1.檢測服務器所支持的請求方法

2.CORS中的預檢請求
    如何知道這個接口是否跨域了呢?用options檢測一下接口,如果允許跨域,再發起真實的請求

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章