restful规范

RESTful 规范

一种软件的架构风格,设计风格,而不是标准,为客户端和服务端的交互提供一组设计原则和约束条件

一 面向资源编程

每一个url代表一个资源,URL中尽量不要用动词,要用名词,名词和数据库中的表对应

例如:
http://www.xyxyxy.com/salary?page=1&size=10

二 不同的请求方式的不同,进行不同的操作

GET/POST/PUT/DELETE/PATCH

三 在URL中体现版本(要迭代)

例如:
http://www.xyxyxy.com/v1/salary?page=1&size=10 
http://www.xyxyxy.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.xyxyxy.com/api/v1/salary?page=1&size=10 
http://www.xyxyxy.com/api/v2/salary?page=1&size=10

五 在URL中的过滤条件(在url上添加?page=1&size=10)

http://www.xyxyxy.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.xyxyxy.com/api/v1/depart/8/
	}
}
posted @ 2018-09-26 21:04  流年中渲染了微笑  阅读(228)  评论(0编辑  收藏  举报