前后端开发模式,restful规范,序列化与反序列化,cbv源码

1.前后端开发模式

后端人员写前后端混合开发项目 ==》使用模板语法渲染

 

 

 

后端人员写前后端分离项目  ==》后端人员只负责写API,使用postman来测试接口,前端的人专门做前端,写的时候使用mock测试数据,最后进行前后端联调,有错误的地方负责的人再去改

 

 

 2.restful规范

restful规范是由外国一博士在20000年博士论文中提出,一共有十点 == 》公司可能会有自己的规范,不会完全遵守restful规范。

  1. 数据安全保障:url链接一般采用https协议进行传输。(https = http+ssl/tsl)
  2. 接口中带有API关键词。 (就是有API这个单词QAQ)
  3. 多数据版本共存,一个接口可能有多个版本,但url链接中会带版本标识。 
  4. 数据即使资源,都使用名词复数  
  5. 资源操作由请求方式决定(对应第四点){'GET' : 获取数据,'POST':增加数据,'DELETE':删除数据,'PUT':修改数据,'PATCH':修改数据}请求地址一样,通过请求方式反应资源的操作方式
  6. url中带过滤参数 
  7. 响应带状态码 (1XX,2XX,3XX,4XX,5XX)自己了解部分的意思
  8. 响应体中带错误信息
  9. 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范
    GET /collection:返回资源对象的列表(数组)[{},{}]
    GET /collection/resource:返回单个资源对象 {}
    POST /collection:返回新生成的资源对象 {}
    PUT /collection/resource:返回完整的资源对象 {}
    PATCH /collection/resource:返回完整的资源对象 {}
    DELETE /collection/resource:返回一个空文档

  10. 响应中带链接

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)

 

posted @ 2022-09-26 15:48  shangxin_bai  阅读(81)  评论(0)    收藏  举报