restful规范:
它是一个规范,面向资源架构
10条规范:
1 API与用户的通信协议,总是使用HTTPs协议
2 域名:
https://api.example.com:尽量将API部署在专用域名(会存在跨域问题)
https://example.org/api/:API很简单
3.版本
https://api.example.com/v1/
把版本号放到请求头中 127.0.0.1/book/1
4.路径,视网络上任何东西都是资源,均使用名词表示(可复数)
127.0.0.1/books/
5.method,通过请求方式来表示进行的操作
127.0.0.1/books/ get请求:表示获取所有图书
127,0.0.1/books/ post请求:表示新增一本书
127.0.0.1/books/ delete请求:表示删除一本书
127.0.0.1/books/ put/patch请求:表示修改一本书
6.过滤,通过在url上传参的形式传递搜索条件
7 状态码
1开头:服务器正在处理
2开头:服务器处理成功
3开头:重定向
4开头:客户端错误
5开头:服务器错误
注意:在返回的数据中携带状态码
8.错误处理,应返回错误信息,error当做key
9.返回结果针对不同操作,返回数据格式要求
10 范湖结果中提供链接
总结:路径都用名词表示,请求方式不同表示不同的操作
CBV(View)的源码执行流程
路由:url(r'^books/$',views.Books.as_view()),
当程序启动,第二个参数是一个函数的内存地址,本质执行View类的dispatch方法
4drf框架简单使用
只要用drf,就要写cbv
类似于app,需要注册
drf提供:
序列化组件
视图组件
解析器
认证组件
权限组件
频率组件
分页器
响应器
url控制器
版本控制
5APIView的源码执行流程
...
urlencode编码
formdata编码
json编码:request.POST是没有值,只能从body中取出,直接处理
幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用.
在增删改查四个操作中,查询对于结果不会有改变,删除只会进行一次,用户多次点击产生的结果一样,修改在大多数场景下结果一样,增加在重复提交的场景下会出现
设计接口做到幂等:
方法一:第一次执行创建一个变量,通过检测变量的值确定操作是否重复
方法二:分布式环境下各个服务相互调用
通过检测对应数据是否产生确定操作状态
微服务:微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中各个微服务可被独立部署,各个微服务之间松耦合的,每个微服务仅关注于完成一件任务并很好的完成该任务,在所有情况下,每个任务代表着一个小的业务能力