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)
来源: http://www.bubuko.com/infodetail-2698553.html