我们在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