RESTful 规范
一种软件的架构风格,设计风格,而不是标准,为客户端和服务端的交互提供一组设计原则和约束条件
一 面向资源编程
每一个url代表一个资源,URL中尽量不要用动词,要用名词,名词和数据库中的表对应
例如:
http://www.luffycity.com/salary?page=1&size=10
二 不同的请求方式的不同,进行不同的操作
GET/POST/PUT/DELETE/PATCH
三 在URL中体现版本(要迭代)
例如:
http://www.luffycity.com/v1/salary?page=1&size=10
http://www.luffycity.com/v2/salary?page=1&size=10
https://v4.bootcss.com/?page=1&size=10
https://v3.bootcss.com/?page=1&size=10
四 在URL中体现是否是API
例如:
http://www.luffycity.com/api/v1/salary?page=1&size=10
http://www.luffycity.com/api/v2/salary?page=1&size=10
五 在URL中的过滤条件(在url上添加?page=1&size=10)
http://www.luffycity.com/salary?page=1&size=10
六 尽量使用HTTPS
HTTPS会比http安全
七 响应时设置状态码
1 信息,服务器收到请求,需要请求者继续执行操作
2 成功,操作被成功接收并处理
3 重定向,需要进一步的操作以完成请求
4 客户端错误,请求包含语法错误或无法完成请求
5 服务器错误,服务器在处理请求的过程中发生了错误
八 返回值
根据请求方式的不同,返回不同的返回值
GET请求 返回查到所有或单条数据
POST请求 返回新增的数据
PUT请求 返回更新数据
PATCH请求 局部更新 返回更新整条数据
DELETE请求 返回值为空
九 返回错误信息
返回值携带错误信息(我们在登录的时候,用户名和密码输入错误信息标红显示)
十 Hypermedia API(超链接)
如果遇到需要跳转的情况 携带调转接口的URL
# url
url(r'^publishes/$', views.PublishView.as_view(),name="publish"),
url(r'^publishes/(?P<pk>d+)/$', views.PublishDetailView.as_view(),name="publish_detail"),
url(r'^books/$', views.BookView.as_view(),name="books"),
url(r'^books/(d+)/$', views.BookDetailView.as_view(),name="detailbook"),
class BookSerializers(serializers.ModelSerializer):
publish= serializers.HyperlinkedIdentityField(
view_name='publish_detail', # 对应上面的别名
lookup_field="publish_id", # 数据库的字段id
lookup_url_kwarg="pk") # 分组命名
class Meta:
model=Book
fields="__all__"
ret = {
code: 1000,
data:{
id:1,
name:'小强',
depart_id:http://www.luffycity.com/api/v1/depart/8/
}
}