首页 > 编程语言 >前后端开发模式,restful规范,序列化与反序列化,cbv源码

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

时间:2022-09-26 15:56:37浏览次数:42  
标签:self request collection 源码 cbv kwargs 序列化 view

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)

 

标签:self,request,collection,源码,cbv,kwargs,序列化,view
From: https://www.cnblogs.com/shangxin-bai/p/16731198.html

相关文章

  • 大并发服务器架构(陈硕muduo库源码解析)——源码分析篇
    muduo库分为base和net两个部分,base中是一些与网络无关的内容,net中时网络库的内容。首先看Timestamp类的源代码:我将每节课讲的代码都放在了myMuduoTest中。1.Timestamp......
  • 表单序列化得常用方法
    方法1:serialize():就是把表单信息序列化成一个字符串(认为最常用的方法)<html><head><scripttype="text/javascript"src="/jquery/jquery.js"></script><scriptty......
  • HashMap底层原理及jdk1.8源码解读
    一、前言写在前面:小编码字收集资料花了一天的时间整理出来,对你有帮助一键三连走一波哈,谢谢啦!!HashMap在我们日常开发中可谓经常遇到,HashMap源码和底层原理在现在面试中是......
  • SpringCloud/Alibaba学习+Nacos/Sentinel源码(五万字长文)
    SpringCloud学习笔记未经授权不得转载,创作不易,违者必究一、微服务架构1.1应用架构发展集中式架构网站流量很小,一个应用将所有功能部署优点:系统开发速度快;维护成本......
  • MJExtension 源码解析
    1.NSObject+MJClass为基类添加了一个Class相关的分类,用于获取设置所有关于Class的配置。1.1核心方法-遍历类的继承树/***遍历所有的类*/+(void)mj_enu......
  • SpringAOP源码分析
    AOP源码流程源码基于:Spring5.3.23版本当Spring开启切面后,会向Spring容器中添加一个BeanPostProcessor,即AbstractAutoProxyCreator,即对象通过反射初始化后执行的一个处理......
  • php反序列化的
    说明:​ 今天的CTF遇到php反序列化的问题,之前只是稍微了解,没有认真学习过,所以今天就懵了~,好吧,当不能上多次,今天就好好记录下突击的结果吧。1、介绍PHP的反序列化网络上......
  • 【源码笔记】ThreadPoolExecutor#getTask
    /***Performsblockingortimedwaitforatask,dependingon*currentconfigurationsettings,orreturnsnullifthisworker*mustexitbecauseofanyo......
  • 【源码笔记】ThreadPoolExecutor#runWorker
    /***Mainworkerrunloop.Repeatedlygetstasksfromqueueand*executesthem,whilecopingwithanumberofissues:**1.Wemaystartoutwithanin......
  • linux源码包 实验报告
    实验任务linux源码包的基础命令 实验环境一台centos7 实验步骤1.下载软件包将软件包拖进远程连接    2.解压缩  3.解压tar包  4.yum安......