首页 > 其他分享 >请求与响应

请求与响应

时间:2024-04-21 21:59:37浏览次数:20  
标签:请求 framework request rest 响应 格式 data

【一】请求 Request

​ 首先要知道,继承了APIView的视图类的方法的request对象不在是django默认的request对象,而是经过drf包装的一个新的request对象,他比老的request的功能要强大,它是Request类的对象

​ 如果想要限制前端发过来的数据格式,它也可以控制解析的格式

views.py

class RequestView(APIView):
    # 限制请求,只接收json格式

    # 方式一 :在视图类中控制,先导入JSONParser, FormParser, MultiPartParser三个类风别时控制可以接收的请求格式
    parser_classes = [JSONParser]

    # 方式二 在配置文件中配置 REST_FRAMEWORK,配置文件配置的是全局配置,如果全局和局部(方式一)都配置了,那么以局部为准,局部优先
    def post(self, request):
        print(request.data)  # 通过formdata发请求 request.data里面也有文件数据
        print(request.FILES)  # 这里面也有文件数据
        return Response('post ok')

settings.py

REST_FRAMEWORK = {
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser',
    ],
}

补充

​ 新的request.data既可以拿到文件数据,也可以拿到普通数据

【二】响应 Response

【1】响应对象

​ drf给我们提供了一个响应类Response,使用该类构造响应对象时,响应的具体数据内容会被转换(render渲染)成符合前端需求的类型。

【2】响应对象参数分析

​ 点进源码来看会发现有这么一堆参数

class Response(SimpleTemplateResponse):
    def __init__(self, data=None, 
                 status=None,
                 template_name=None, 
                 headers=None,
                 exception=False, 
                 content_type=None):
        
data: # 字典,列表,字符串。。--》后续放在了响应体中
status # http响应状态码,如果不传,默认是200  ,status包下定义了一堆http状态码常量      
template_name: # 一般不用,用浏览器方法--可以看到的样子
headers: # 响应头,可以根据需求自己在响应头上加点东西 
exception:# 不用管
content_type: # 指定响应编码格式,一般默认

补充

​ 有时候前端带来sessionid到后端,但是后端没有session表(也就是还没有做表迁移的时候),就会报错。

【3】响应格式

​ drf接口会根据客户端类型自动返回不同的格式,比如浏览器就返回好看的html页面,postman就返回一堆json数据

​ 跟解析请求数据一样,也可以做限制处理

# 先导入这两个类 JSONRenderer就是JSON格式 BrowsableAPIRenderer就是浏览器格式,也就是html页面
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer

class RequestView(APIView):
    # 控制响应格式
    # 方法一 再类中写renderer_classes属性
    renderer_classes = [JSONRenderer] # 只响应JSON格式 无论是浏览器还是postman

    def post(self, request):
        print(request.data)  # 通过formdata发请求 request.data里面也有文件数据
        print(request.FILES)  # 这里面也有文件数据
        return Response('post ok')

    def get(self, request):
        return Response()

    # 方法二 全局控制 在settings文件中配置
    
    REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.TemplateHTMLRenderer',
    ],

标签:请求,framework,request,rest,响应,格式,data
From: https://www.cnblogs.com/Hqqqq/p/18149562

相关文章

  • aspNet http中的请求参数
    问题[Route("api/[controller]")][ApiController]publicclassUserController:ControllerBase{privatereadonlyUserManager<IdentityUser>_userManager;publicUserController(UserManager<IdentityUser>userManager){......
  • Mac 上fiddler与charles 抓包https 小程序请求 内容
    为什么选择charles之前讲过《wireshark使用教程及过滤语法总结——血泪史的汇聚》,很强大,但是很难用。fiddler很好用,之前mac上面没有,现在有了 fiddlereverywhere,但是没有破解版,作为中国新一代农民工——码农,确实没钱买。findermac版本:下载:软件官网下载地址:https://ww......
  • Web后端开发-请求响应
    Web后端开发-请求响应请求(HttpServletRequest):获取请求数据响应(HttpServletResponse):设置响应数据BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。(京东淘宝等网站)CS架构:Client/Server,客户端/服务端架构模式。(QQ,微信等客户......
  • Flask请求和响应
    Flask请求和响应目录Flask请求和响应flask请求对象request参数args-Get参数获取form-POST请求参数JSONrequest.values路径属性路由转化器自定义转换器flask响应返回返回json自定义响应对象重定向Cookies对象Cookie的特点Session会话对象Session的特点参考资料flask请求对象使用......
  • 如何创建响应式HTML电子邮件模板
    在这个适合初学者的指南中,你将学习如何创建一个响应式电子邮件模板。你将跟随逐步说明以及代码片段设计一个在任何设备上都看起来很棒的电子邮件模板。这个项目非常适合渴望掌握电子邮件设计基础的新手!(本文视频讲解:java567.com)步骤1:设置基本结构要构建一个电子邮件模板,你可以......
  • HttpClient 总是被添加traceparent 请求头
    最近在项目中发现,HttpClient中调用某Api总是出现403的异常,自己使用postman调用即没有问题,经排查是HttpClient会自动添加traceparent请求头Accept-Encoding:gzipUser-Agent:Firefox/5.0(Linux3.4;rv:14.0)Gecko/20100101Firefox/91.0traceparent:00-274628f3ce14109d......
  • 免费PHP服务器-轻松搭建网站,快速响应,稳定高速!
    免费的PHP服务器对于初学者和小型项目来说可能是一个吸引人的选择,但需要注意的是,免费的服务往往有一些限制和潜在的风险。在选择免费PHP服务器时,请务必考虑以下几点:++书谷网库++免费服务器收录大全性能限制:免费服务器往往有资源限制,如CPU、内存和存储空间的限制。这可能导致网站......
  • hyperf统一请求响应
    2024年4月18日08:48:45以下是两个方案:1,使用注解,直接返回<?phpnamespaceApp\Utils;useApp\Utils\GlobalCode;useApp\Utils\GlobalMsg;useHyperf\Contract\ContainerInterface;useHyperf\Di\Annotation\Inject;useHyperf\HttpServer\Contract\RequestInterfac......
  • Jmeter如何判断请求的数据是Json还是表单格式
    就我个人而言,最简单的是使用curl命令执行下就知道了,比如我自己写的图书管理系统,flask框架图书管理系统服务器端-加个小鸡腿-博客园(cnblogs.com) ,python命令启动后是这样的 其中查询所有图书的接口是127.0.0.1:5000/books,我们打开浏览器输入这条url显示的数据是json格式......
  • 应急响应靶场Where-1S-tHe-Hacker
    应急响应实战靶场打开靶机,发现有两个用户,admin和admin$,一个是隐藏用户admin用户的密码是Aa123456杀软查杀进入主机,我们直接使用D盾和D-eyes杀软进行后台扫描,节省时间这边附上绿盟科技的D-Eyes的使用参数说明####Windows请以管理员身份运行cmd,之后再输入D-Eyes路径运......