Python自動化開發學習-RESTful API
阿新 • • 發佈:2018-07-24
django 英文 show post 序列 one 其他 nsf 列表 RESTful API
JsonResponse這個類是HttpRespon的子類,通過它直接就可以把字典進行序列化並返回給前端。
RESTful API 是一種面向資源編程,也叫表征狀態轉移(英文:Representational State Transfer,簡稱REST)。
認為網絡上所有的東西都是資源,對資源的操作無非就是增刪改查。
傳統的方法
比如有個資產的頁面,URL是 www.example.com/asset
。要對它進行增刪改查,可能使用不同的url來區分:
www.example.com/addAsset
:增加資產,一般是POST方法。www.example.com/delAsset
:刪除資產,一般是POST方法。www.example.com/editAsset
:修改資產,一般是POST方法。www.example.com/showAsset
:顯示資產,一般是GET方法。也可能使用www.example.com/asset
作為url
這裏的url一般使用的都是動詞,表示是一個動作。
RESTful API 的規則
RESTful API 用一個url代指一個資源,既然是資源,這個詞要用名詞。那麽這個url就是 www.example.com/asset
。增刪改查都是通過這個url實現的,通過不同的method實現不同的方法,常用的是下面幾個方法:
- GET(SELECT):從服務器取出資源(一項或多項)。
- POST(CREATE):在服務器新建一個資源。
- PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
- PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
- DELETE(DELETE):從服務器刪除資源。
在django中,推薦使用CBV。當然FBV也不是不行。
RESTful API 設計指南
這篇貌似講的很好,值得參考:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
JsonResponse
使用API就會有很多序列化數據返回的操作。
之前當我們需要給前端返回序列化後的字符串時,往往都是先調用json.dumps()這個方法,然後再用HttpResponse()把字符串返回給前端。既然每次都要這麽搞,於是django給我麽封裝了一個新方法,直接完成序列化和返回字符串。
>>> from django.http import JsonResponse
>>> response = JsonResponse({‘foo‘: ‘bar‘})
>>> response.content
‘{"foo": "bar"}‘
默認只能傳入一個字典,並且API要返回的數據應該也就是字典。但是如果一定要序列化一個其他的類型,比如列表,可以設置safe參數:
>>> response = JsonResponse([1, 2, 3], safe=False)
如果要自定義編碼器,和json方法一樣,通過下面的參數指定:
>>> response = JsonResponse(data, encoder=MyJSONEncoder)
Python自動化開發學習-RESTful API