时间:2021-05-22
前言
我们在django-rest-framework 自定义swagger 文章中编写了接口, 调通了接口文档. 接口文档可以直接填写参数进行请求, 接下来的问题是如何接受参数, 由于请求方式与参数序列化形式的不同, 接收参数的方式也有不同.
前提条件
服务端我们使用django-rest-framework编写接口.
这是一个简单接口, ReturnJson继承自APIView
而APIView 来自from rest_framework.views import APIView
以下 def get, def post等等的前提条件都是接口类继承自APIView.
当然还可以继承自其它的类例如.
from rest_framework import viewsets, generics
他们的用法各有特点, 详情查看
在request对象中
POST
post 请求参数都在请求体中, 但是其实你的url可以写成get的形式, 最终结果, 参数会有两部分组成, 一部分在url中, 一部分在http body 中, 但是非常不建议这样做.
接下来的代码编写也不会考虑这样的情况, post 仅考虑所有参数都在http body 中的情况.
提交类型 参数位置 参数类型 form-data提交, 参数在data中, 类型为QueryDict application/json提交 参数在data中 类型为dict (swagger)使用接口文档提交, 由于使用curl提交, 虽然是post 但是参数依然被类似get的形式拼接到了url之后, 此时 参数在query_params 中 类型为 QueryDict x-www-form-urlencoded 参数在data中 类型为 QueryDictPUT
提交类型 参数位置 参数类型 form-data request.data QueryDict application/json request.data dict x-www-form-urlencoded request.data QueryDict (swagger) request.data dictPATCH
提交类型 参数位置 参数类型 form-data request.data QueryDict application/json request.data dict x-www-form-urlencoded request.data QueryDict (swagger) request.data dict
DELETE
提交类型 参数位置 参数类型 form-data request.data QueryDict application/json request.data dict x-www-form-urlencoded request.data QueryDict (swagger) request.query_params QueryDict iOS端提交和get情况一样 request.query_params QueryDict
编写参数统一处理的方法
总结一下, 当url有?param=1¶m=2这样的参数时忽略body中的参数, 例如get,delete提交,如果query_params有内容, 则忽略body内容. 将QueryDict转为dict返回, 再判断request.data中是否有内容, 类型如何.
使用方法
最后的效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言我们在django-rest-framework解析请求参数文章中完成了接口文档到参数解析,一个完整的流程中还缺少对数据库的操作.本篇内容为django连接
django-rest-framework类视图拓展自django的类视图,只是针对数据的序列化和反序列化等逻辑做了封装。django-rest-framewo
我使用django-rest-framework开发了一个API.我正在使用ModelSerializer返回模型的数据.models.pyclassMetaT
如果没有设置分页,django-rest-framework会将所有资源类表序列化后返回,如果资源很多,就会对网站性能造成影响。为此,我们来给博客文章列表API
在使用django-rest-framework开发项目的时候我们总是避免不了跨域的问题,因为现在大多数的项目都是前后端分离,前后端项目部署在不同的web服务器