python3-开发进阶-RESTful 软件架构风格
一. 什么是RESTful?
- REST與技術(shù)無關(guān),代表的是一種軟件架構(gòu)風(fēng)格,REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態(tài)轉(zhuǎn)移”
- REST從資源的角度類審視整個(gè)網(wǎng)絡(luò),它將分布在網(wǎng)絡(luò)中某個(gè)節(jié)點(diǎn)的資源通過URL進(jìn)行標(biāo)識,客戶端應(yīng)用通過URL來獲取資源的表征,獲得這些表征致使這些應(yīng)用轉(zhuǎn)變狀態(tài)
- 所有的數(shù)據(jù),不過是通過網(wǎng)絡(luò)獲取的還是操作(增刪改查)的數(shù)據(jù),都是資源,將一切數(shù)據(jù)視為資源是REST區(qū)別與其他架構(gòu)風(fēng)格的最本質(zhì)屬性
- 對于REST這種面向資源的架構(gòu)風(fēng)格,有人提出一種全新的結(jié)構(gòu)理念,即:面向資源架構(gòu)(ROA:Resource Oriented Architecture)
總結(jié):一切皆資源
二. RESTful API設(shè)計(jì)
- API與用戶的通信協(xié)議,總是使用HTTPs協(xié)議。
- 域名?
- https://api.example.com? ? ? ? ? ? ? ? ? ? ? ? ?盡量將API部署在專用域名(會存在跨域問題)
- https://example.org/api/? ? ? ? ? ? ? ? ? ? ? ? API很簡單
- 版本
- URL,如:https://api.example.com/v1/
- 請求頭? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 跨域時(shí),引發(fā)發(fā)送多次請求
- 路徑,視網(wǎng)絡(luò)上任何東西都是資源,均使用名詞表示(可復(fù)數(shù))
- https://api.example.com/v1/zoos
- https://api.example.com/v1/animals
- https://api.example.com/v1/employees
- method
- GET? ? ? :從服務(wù)器取出資源(一項(xiàng)或多項(xiàng))
- POST? ? :在服務(wù)器新建一個(gè)資源
- PUT? ? ? :在服務(wù)器更新資源(客戶端提供改變后的完整資源)
- PATCH? :在服務(wù)器更新資源(客戶端提供改變的屬性)
- DELETE :從服務(wù)器刪除資源
- 這么看不夠明顯?
- 我們有這樣幾個(gè)url
books? ? ? ? ? ? ? ? - -------> books? ? ? ? ? ? 查看
book/add/? ? ? ? ? ? ------->addbooks? ? ? ?添加
book/1/change? ?-------->changebook? ?修改
book/1/delete? ? --------->changebook? ?刪除
RESTful:
? ? ? ? ? ? get? ? ? ? ? ? ? 查看
books -------------------->
post? ? ? ? ? ? 添加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? get? ? ? ? ?查看
book/1/-------------------->? ? ? put? ?更新
delete? ? ? ?刪除
- 過濾,通過在url上傳參的形式傳遞搜索條件
- https://api.example.com/v1/zoos?limit=10:指定返回記錄的數(shù)量
- https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
- https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)
- https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結(jié)果按照哪個(gè)屬性排序,以及排序順序
- https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件
- 狀態(tài)碼
- 錯(cuò)誤處理,狀態(tài)碼是4xx時(shí),應(yīng)返回錯(cuò)誤信息,error當(dāng)做key。
- 返回結(jié)果,針對不同操作,服務(wù)器向用戶返回的結(jié)果應(yīng)該符合以下規(guī)范。
- Hypermedia API,RESTful API最好做到Hypermedia,即返回結(jié)果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應(yīng)該做什么。
摘自:http://www.ruanyifeng.com/blog/2014/05/restful_api.html?
更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com
總結(jié)
以上是生活随笔為你收集整理的python3-开发进阶-RESTful 软件架构风格的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器内核总结
- 下一篇: python编写姓名年龄_python小