1.前后端开发模式
后端人员写前后端混合开发项目 ==》使用模板语法渲染
后端人员写前后端分离项目 ==》后端人员只负责写API,使用postman来测试接口,前端的人专门做前端,写的时候使用mock测试数据,最后进行前后端联调,有错误的地方负责的人再去改
2.restful规范
restful规范是由外国一博士在20000年博士论文中提出,一共有十点 == 》公司可能会有自己的规范,不会完全遵守restful规范。
- 数据安全保障:url链接一般采用https协议进行传输。(https = http+ssl/tsl)
- 接口中带有API关键词。 (就是有API这个单词QAQ)
- 多数据版本共存,一个接口可能有多个版本,但url链接中会带版本标识。
- 数据即使资源,都使用名词复数
- 资源操作由请求方式决定(对应第四点){'GET' : 获取数据,'POST':增加数据,'DELETE':删除数据,'PUT':修改数据,'PATCH':修改数据}请求地址一样,通过请求方式反应资源的操作方式
- url中带过滤参数
- 响应带状态码 (1XX,2XX,3XX,4XX,5XX)自己了解部分的意思
- 响应体中带错误信息
-
返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /collection:返回资源对象的列表(数组)[{},{}]
GET /collection/resource:返回单个资源对象 {}
POST /collection:返回新生成的资源对象 {}
PUT /collection/resource:返回完整的资源对象 {}
PATCH /collection/resource:返回完整的资源对象 {}
DELETE /collection/resource:返回一个空文档 - 响应中带链接
3.序列化与反序列化
什么是序列化什么是反序列化
大白话就是前端发过来的数据要转换成后端能看懂的数据,就要经过反序列化,反之则是序列化。
4.cbv源码
第一个参数是路径,第二个参数是试图函数的内存地址(视图类执行as_view这个类方法,把它执行完,结果放在第二个参数上:我们猜执行完的结果是个函数内存地址)
path('test/', views.TestView.as_view()),
-去找as_view,去TestView类中找,找不到,没有,去父类中找View
@classonlymethod
def as_view(cls, **initkwargs):
def view(request, *args, **kwargs):
return self.dispatch(request, *args, **kwargs)
return view
-当请求来了,路由匹配成功,会执行view(request)--->本质执行self.dispatch(request, *args, **kwargs)
-去View中找到了dispatch
def dispatch(self, request, *args, **kwargs):
# 请求方式转成小写,假设 get 请求,符合if条件
if request.method.lower() in self.http_method_names:
# 反射 getattr(对象,'字符串','默认值')
# self是TestView的对象
# handler 就是TestView类的get方法
handler = getattr(self, 'get', self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
return handler(request, *args, **kwargs) # get(request)
标签:self,request,collection,源码,cbv,kwargs,序列化,view From: https://www.cnblogs.com/shangxin-bai/p/16731198.html