zoukankan      html  css  js  c++  java
  • rest-framework之解析器

    1、解析器的作用

    根据请求头 content-type 选择对应的解析器对请求体内容进行处理;

    有application/json,x-www-form-urlencoded,form-data等格式;


    举例说明:

    1)发送application/json数据,让后端接收:
    views.py

    from django.shortcuts import render
    from rest_framework.views import  APIView
    from rest_framework.response import  Response
    
    class Test(APIView):
        def post(self, request):
            print(request.data)
            print(type(request.data))
            return Response()


    urls.py

    url(r'^test/', views.Test.as_view()),


    postman测试,后端接收的是一个字典:

    image

    image


    2)发送x-www-form-urlencoded数据,让后端接收:

    视图和路由都不变;


    postman测试,后端接收的是一个QueryDict:

    image

    image


    3)发送form-data数据,让后端接收:

    后端接收的也是一个QueryDict,不截图了;


    由此可见:默认可以解析以上三种格式;



    2、解析器的使用

    现在问题来了,如果我只想解析application/json格式的数据怎么办呢?

    1)解析器的局部使用

    views.py

    from django.shortcuts import render
    from rest_framework.views import  APIView
    from rest_framework.response import  Response
    
    # 导入模块
    from rest_framework.parsers import JSONParser
    
    
    class Test(APIView):
        parser_classes = [JSONParser,]  # 只解析application/json
        def post(self, request):
            print(request.data)
            print(type(request.data))
            return Response()


    其他配置不变,测试一下,可见其他格式已经不行了,就不逐一测试了:

    image


    2)解析器的全局使用

    setttins.py

    REST_FRAMEWORK = {
        'DEFAULT_PARSER_CLASSES':[
            'rest_framework.parsers.JSONParser'
            'rest_framework.parsers.FormParser'
            'rest_framework.parsers.MultiPartParser'
        ]
    }
  • 相关阅读:
    CVE-2017-12149JBoss 反序列化漏洞利用
    Exp4:恶意代码分析
    Exp3:MAL_免杀原理与实践
    Exp2:后门原理与实践
    Exp1 PC平台逆向破解
    20155212 2016-2017-2《Java程序设计》课程总结
    20155117王震宇实验五网络编程与安全
    20155117王震宇实验四 Andoid开发基础实验报告
    Exp9 Web安全基础
    Exp8 web基础
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/12522760.html
Copyright © 2011-2022 走看看