使用Django Rest Framework
API接收GET请求,其中json对象编码到URL中。举例来说:
第一个月
其中解码的参数是
{
"foo":["bar","baz"]
}
字符串
我在Django或DRF的文档中找不到任何关于框架如何处理这个问题的内容,所以我通过执行以下操作来获得一个包含json对象的QueryDict
:request.query_params # Should yield a dict -> {foo=[bar,baz]}
个
如何在Django Rest Framework中解码JSON编码的URL?
请注意,我的实际参数要复杂得多。使用POST并不是一个简单的方法,因为调用者非常依赖缓存和书签
3条答案
按热度按时间0s0u357o1#
Django
request.GET
对象和Django REST添加的request.query_params
别名只能解析application/x-www-form-urlencoded
查询字符串,该类型使用HTML表单编码。此格式只能编码键值对。没有将JSON编码为查询字符串的标准,部分原因是URL具有rather limited amount of space。如果你必须在查询字符串中使用JSON,如果你使用prefixed the JSON data with a key name,那会容易得多,所以你至少可以让Django为你处理URL的百分比编码。
例如:
字符串
可以通过以下方式访问和解码:
型
如果不能添加
json=
前缀,则需要使用urllib.parse.unquote_plus()
从request.META['QUERY_STRING']
值中解码URL百分比编码:型
xmjla07d2#
urllib
应该这样做:字符串
上面的几乎可以工作,但编码可能不正确,不确定:
型
j0pj023g3#
字符串
我创建此函数是为了获取类似于
ref=Y3e8rowMetWiBA40f2HtBGsRfb76IOXykAMxcNcog7w=&vef=qDMdvZb+P9sNWbH/dYrDztq79SV6wQ+vf9z1qlUzf3U=
的查询参数