1. 程式人生 > >Python自動化開發學習-RESTful API

Python自動化開發學習-RESTful API

django 英文 show post 序列 one 其他 nsf 列表

RESTful API

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給我麽封裝了一個新方法,直接完成序列化和返回字符串。

JsonResponse這個類是HttpRespon的子類,通過它直接就可以把字典進行序列化並返回給前端。

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