• dif请求与响应


    请求与响应

    1.Request类

            DRF的Request不再是原生Django里的HttpRequest,而是DRF提供的拓展了HttpRequest类的Request对象,所以其用法和HttpRequest大致相同但也有不同之处

    " role="presentation">  在原生Django中put请求提交的数据在requuest.POST中是取不到的而在DRF的Request类通过request.data就可以获取POST、PUT、PATCH请求方式解析后的数据

    " role="presentation">  drf 请求的所有 url 拼接参数都被解析到 request.query_params 中,原生Django中request.GET功能一样

    ps:其他的用法与之前原生Django一样,继承APIView后每一次请求都是一个新的request

    2.Response类

            DRF提供了一个响应类Response,使用该类构造响应对象时,响应的具体内容数据会被转换成符合前端需求的类型

    3.请求编码与响应编码

    " role="presentation"> 请求编码:

    请求默认能解析的请求编码:urlencoded、form-data、json三种编码方式,但其实是因为在drf内置的配置文件中提前配置好了

    1. # dif有两套配置 一套在项目的settings.py中另一套是默认的配置
    2. REST_FRAMEWORK = {
    3. 'DEFAULT_RENDERER_CLASSES': ( # 默认响应渲染类
    4. ‘rest_framework.parsers.JSONParser', # 可以解析json格式
    5. 'rest_framework.renderers.FormParser', # 可以解析urlencoded格式
    6. 'rest_framework.renderers.MultiPartParser', # 可以解析form-data格式
    7. )
    8. }

    但是定义在配置文件中的话太广泛了,我们也可以根据每个视图类的具体要求在视图类中局部配置这样解析类就会优先使用视图类自己的

    1. class TestView(APIView):
    2. parser_classes = [JSONParser,FormParser,MultiPartParser] # 指定视图类支持哪个解析格式

    ps:再视图类中局部配置后解析类的使用顺序成为:优先视图类自己的然后用项目 settings.py配置文件中配置的,最后再用内置配置文件内的

    " role="presentation">  响应编码

    响应再返回的时候会根据用浏览器还是接口测试工具展示出不同的样子,在浏览器中展示会有好看的样子而在接口测试工具中展示的是json格式,默认情况下响应编码是根据客户端类型决定的

    全局配置:在项目配置文件中配置(settings.py)

    1. REST_FRAMEWORK = {
    2. 'DEFAULT_RENDERER_CLASSES': [
    3. 'rest_framework.renderers.JSONRenderer', # json格式
    4. 'rest_framework.renderers.BrowsableAPIRenderer', #浏览器的格式
    5. ]
    6. }

    局部配置:在视图类中单独配置

    1. class TestView(APIView):
    2. renderer_classes = [JSONRenderer,]

    ps:和请求编码一样使用顺序也是优先视图类自己再项目文件配置,但是在实际编码中响应一般不配配置使用默认的

  • 相关阅读:
    使用 KubeBlocks 为 K8s 提供稳如老狗的数据库服务
    Ketlle数据采集和预处理工具的认知和基本应用
    react事件机制
    布隆过滤器简单实现添加和判断功能
    网上选课系统的设计与实现(ASP.NET)
    IDEA中SpringBoot的启动类文件变成了一个J文件的解决方案
    深入了解计算机系统(CS:APP)思考题
    阿里云服务器价格计算器(一键计算精准报价)
    使用 K3d 在 Docker 中运行 Kubernetes 集群
    【计算机毕业设计】41.航空订票系统
  • 原文地址:https://blog.csdn.net/weixin_52596593/article/details/127109945