django-rest-framework解析请求参数过程详解

  

  

我们在django-rest-framework自定义大摇大摆文章中编写了接口,调通了接口文档。接口文档可以直接填写参数进行请求,接下来的问题是如何接受参数,由于请求方式与参数序列化形式的不同,接收参数的方式也有不同。
  

  


  

  

服务端我们使用django-rest-framework编写接口。
  

        类ReturnJson (APIView):      coreapi_fields=(   DocParam(“令牌”),   )      def get(自我,请求,* args, * * kwargs):   返回JsonResponse (“Hello world ! ! ! ! ! ! ! ! + + + + + +中文测试”)      

这是一个简单接口,ReturnJson继承自APIView
  

  

而APIView来从rest_framework自。视图导入APIView
  

  

以下def, def帖子等等的前提条件都是接口类继承自APIView。
  

  

当然还可以继承自其它的类例如。
  

  

<代码>从rest_framework进口viewsets,泛型代码
  

        类ReturnJson (generics.ListCreateAPIView)   类ReturnJson (viewsets.ModelViewSet)      

他们的用法各有特点,详情查看
  

  
      <李> http://www.django-rest-framework.org/api-guide/viewsets/
      李   <李> http://www.django-rest-framework.org/api-guide/generic-views/
      李   <李> http://www.django-rest-framework.org/api-guide/views/
      李   
  

        类ReturnJson (APIView):      coreapi_fields=(   DocParam(“令牌”),   )      def get(自我,请求,* args, * * kwargs):   返回JsonResponse (“Hello world ! ! ! ! ! ! ! ! + + + + + +中文测试”)      def post(自我,请求,* args, * * kwargs):   返回JsonResponse (data=https://www.yisu.com/zixun/{})      def put(自我,请求,* args, * * kwargs):   返回JsonResponse (data={})      

对一个APIView的子类,重写,文章,把等方法就相当于解析这个路径的get、post,把请求,
  

  

请求对象就是请求对象,http头身体的内容都被包含在请求对象中。
  请求对象的类来自rest_framework <代码>。请求导入请求代码
  

  

判断对象是否是某个类实例化而来
  

        从rest_framework。请求导入请求   如果isinstance(请求,请求)      

下面分别分析不同情况的参数位置和类型,最终写出一个方法能够将任何类型的请求参数统一转换为dict方便之后的逻辑编写。
  

  


  

  

得到请求中参数都会以http://xxx.com/api/getjson& # 63; param1=asdf& param2=123
  这样的形式拼接在url后面。
  

  

在请求对象中
  

  
      <李>请求。query_params中可以获取& # 63;param1=32, param2=23形式的参数。   <李>请求。query_params返回的数据类型为QueryDict李   <李> QueryDict转为普通python字典。李query_params.dict()即可。   
  


  

  

文章请求参数都在请求体中,但是其实你的url可以写成得到的形式,最终结果,参数会有两部分组成,一部分在url中,一部分在http的身体中,但是非常不建议这样做。
  

  

接下来的代码编写也不会考虑这样的情况,文章仅考虑所有参数都在http中身体的情况。

           提交类型   参数位置   参数类型               格式提交,   参数在数据中,   类型为QueryDict         application/json提交   参数在数据中   类型为dict类型         (得意)使用接口文档提交,由于使用旋度提交,虽然是职位但是参数依然被类似得到的形式拼接到了url之后,   此时参数在query_params中   类型为QueryDict         x-www-form-urlencoded   参数在数据中   类型为QueryDict            

           提交类型   参数位置   参数类型               格式   request.data   QueryDict         application/json   request.data   dict         x-www-form-urlencoded   request.data   QueryDict         (得意)   request.data   dict            

  

           提交类型   参数位置   参数类型               格式   request.data   QueryDict         application/json   request.data   dict         x-www-form-urlencoded   request.data   QueryDict         (得意)   request.data   dict            

django-rest-framework解析请求参数过程详解