155. RESTframe的请求和响应

news2024/10/5 19:21:05

1.请求和响应

在这里插入图片描述

REST framework引入了2个新的对象:Request和Response

1.1 Request

包结构:rest_framework.request.Request
该对象扩展了常规的HttpRequest ,增加了对REST框架灵活的请求解析和请求认证的支持
主要属性:

  • data
    这个属性类似django的request的POST和FILES属性:
    • django的request.POST:只能获取POST请求的form表单数据
    • rest_framework的request.data:
      • 包括所有已解析的内容,包括文件和非文件输入
      • 支持’POST’, ‘PUT’ 和’PATCH’ 方法
      • 支持REST框架的灵活请求解析,而不仅仅支持表单数据。例如,可以传入JSON数据
  • query_params
    就是标准的request.GET属性,不过从命名角度来说,更加合理,因为不是只有GET请求才有GET查询参数
  • parsers
    一般不需要访问
    在视图中应用 APIView类或@api_view装饰(装饰视图函数)将确保这个属性被自动设置
    注意事项
  1. 如果客户端发送格式错误的内容,则访问request.data可能会引发错误ParseError。默认情况下,REST框架的APIView类或@api_view装饰器将捕获错误并返回400 Bad Request响应。
  2. 如果客户端发送的请求具有无法解析的内容类型,UnsupportedMediaType则会引发异常,
    默认情况下将捕获该异常并返回415 Unsupported Media Type响应

1.2 Response

包结构:rest_framework.response.Response该类是Django的 SimpleTemplateResponse 的子类,使用python原始对象进行数据初始化,然后,REST框架使用标准HTTP内容协商来确定它应如何呈现最终的响应内容
初始化: Response(data, status=None, template_name=None,headers=None, content_type=None)

  • data :响应的序列化数据,如果是复杂对象,如模型实例,需要在传入之前序列化为原始数据类型(如dict等)
  • status :响应的状态代码,默认为200
  • template_name : HTMLRenderer 选择时使用的模板名称
  • headers :要在响应中使用的HTTP标头的字典
  • content_type :响应的内容类型。通常,这将由内容协商确定的渲染器自动设置,但在某些情况下您可能需要明确指定内容类型

属性:

  • data:响应的未呈现的序列化数据
  • status_code:响应状态码,建议使用HTTP_200_OK 这样的常量,而不是 200 这样的数字,常量给每个状态代码提供更明确
    的标识符
    更详细的见:https://www.django-rest-framework.org/api-guide/status-codes/
  • content:渲染后的响应内容,调用此属性前需要调用.render()方法渲染
  • template_name:指定的模板名
  • accepted_renderer:用于渲染响应内容的渲染器实例,在视图返回响应之前由 APIView 或 @api_view 自动设置
  • accepted_media_type:内容协商选择的媒体类型,在视图返回响应之前由 APIView 或 @api_view 自动设置
  • renderer_context:需要渲染的上下文字典对象,在视图返回响应之前由 APIView 或 @api_view 自动设置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PHP+MySQL毕业生档案管理系统

毕业生档案管理系统是信息时代的产物,它是学校档案管理部门的一个好帮手。有了它不再需要繁重的纸质登记,有了它档案管理员不在需要繁重的工作,一些成绩信息和奖惩等基本信息可以由管理人员及时的对信息进行查询、更新、修改和删除&#xff0…

SpringBoot_启动原理分析

一共分为三部分来解析: 一 依赖导入原理 二 springboot 包扫描原理三 springboot自动配置原理一 依赖导入原理 父项目进行版本控制 ctrl 点击spring-boot-starter-parent 进入 继续点击,进入spring-boot-dependencies 这里管理着springboot中所有依赖的版本,版本…

38 | Linux 磁盘空间异常爆满

1 场景 收到告警 找到对应的服务器:df -hl 要找到导致磁盘空间满的目录或文件。 2 找占用空间大的目录或文件 2.1方式一 在根目录下,通过du -hs命令,列出各目录所占空间大小 命令:du -hs * 之后再用同样的方法继续到对应目…

[附源码]计算机毕业设计springboot医学图像管理平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

EXSI-NFS实验

A-EXSI-NFS实验 2022年3月25日 8:20 iptables -F iptables-save systemctl stop firewalld #setenforce [0|1]命令修改SELinux当前的运行模式(0为禁用,1为启用) getenforce Enforcing setenforce 0 getenforce Permissive NFS 两台CentOS 7即…

【车载开发系列】UDS诊断---读取内存($0x23)

【车载开发系列】UDS诊断—读取内存($0x23) UDS诊断---读取内存($0x23)【车载开发系列】UDS诊断---读取内存($0x23)一.概念定义二.注意事项三.报文格式1)报文请求2)肯定响应3&#x…

一、Node.js 环境安装 (详)

1. 下载Node.js 首先进入node.js官网,选择下载这一项,此时映入眼帘的可以看到有两项LTS(长期维护版本)和Current(最新的版本),一般在开发会选择左边进行下载安装,具稳定性以及有长期维护。那么下面演示的是64位的Windows操作系统&…

PCI bar 解析

只要是接入系统的 pci 设备就需要和系统软件进行交互,设备和系统之间的交流主要包含以下两部分: 1,系统要能访问到设备的寄存器 用于控制设备行为,包括DMA,数据收发等;设备通过寄存器报告自身的状态&…

Nginx部署vue项目和配置代理

Nginx部署vue项目和配置代理目录概述需求:实现思路分析1.一般前后端分离的项目需要进行跨域2.微服务代理3.vuenginx实现服务端跨域4.网页解析器参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&am…

【问题解决】Android JDK版本不匹配导致崩溃踩坑记录

【问题解决】Android JDK版本不匹配导致崩溃踩坑记录部分机型反馈崩溃问题谷歌回复与解决方案Android打包脱糖操作对比与排查总结前几天同事遇到一个非常诡异的报错,紧急处理后,趁着周末仔细研究了一下原因,觉得还挺有意思的,所以…

制作一个谷歌浏览器插件,实现网页数据爬虫

一、什么是浏览器插件 浏览器插件,基于浏览器的原有功能,另外增加新功能的工具,是可定制浏览体验的小型软件程序,让用户可以根据个人需要或偏好来定制浏览器。 如拦截网页中的广告、划词翻译、倍速视频等等。 Chrome、edge等浏…

WEB前端网页设计 网页代码参数(背景、图片)类

目录 设置圆角 旋转属性: box-sizing属性: 设置背景图像固定background-attachment 设置多重背景图像 鼠标光标形状:cursor ”图片背景“ background-size 背景图片的大小 背景图像的位置 px 无序列表 : 标签 项目符…

解决cocos2d-x-4.0 Android Demo构建遇到的问题

环境 硬件:macbook pro 四核Intel Core i7系统:macOS Big Sur 11.4.2、 xcode Version 13.1 、cmake 3.20.5软件:iterm2 Build 3.4.8、zsh 5.8、Android Studio Dolphin | 2021.3.1cocos2d-x v4 : 官方下载压缩包 http://cocos2d…

讲点登录业务

1.单点Session 通过判断用户是否有服务器赋予的session_id,点对点服务器的用户信息,确认用户身份 缺点: 单点性能压力大无法扩展,如果是分布式的话,其他的服务怎么进行认证呢? 2.Redis解决共享问题 我们…

JavaWeb(四)

前言 在学习JSP之前,首先咱们要了解的是,学这个语言有什么用,这个语言用在哪里呢? 这就要从咱们的MVC框架开始讲起 MVC模式是一种软件架构模式,对于我这种软件工程专业的人来说,真的是逃离不了学这个东西。…

Java_题目_学生管理系统_注册登录忘记密码

学生管理系统升级版 Java_题目_学生管理系统_业务分析并搭建主菜单_查询添加删除修改 需求: ​ 为学生管理系统书写一个登陆、注册、忘记密码的功能。 ​ 只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。 分析: 登录…

微信小程序自动化测试实践(附 Python 源码)| 实战系列

为什么要进行小程序自动化测试 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序、微信公众号等。小程序项目页面越来越多,业务逻辑也越来越复杂,全手工测试已无法满足快速增长的业务需求。 然而&am…

LL(1)文法的核心原理

来自编译原理课本,课本上讲的非常好,这里用我自己的方法再讲述一下。 讨论范围:2型文法,产生式的左边只有一个非终结符号。(这样才能构建树) 用语法树去进行巨型分析的时候会遇到的问题:多个候…

web前端期末大作业 html+css+javascript汽车介绍网页设计实例 企业网站制作(带报告3490字)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

WEB前端网页设计 CSS网页代码 基础参数(三)

目录 font-size属性单位; color:文本颜色 间距 text-decoration:文本装饰 text-align:水平对齐方式 white-space:空白符处理 text-overflow:标示对象内溢出文本 盒子模型: 高度坍…