如何解决url 中的空查询参数
使用 Django==2.2.13,djangorestframework==3.8.1
这是一个确定“做什么是正确的事情”而不是“如何做”的问题。
前端已经注意到,如果他们调用:
https://my_domain.com/some_path/?foo=
它们触发 ["natural"] 行为,检查 foo
值,类似于错误值,获取空值并做出响应:
{
"the_query_parameter": [
"Select a valid choice. is not one of the available choices."
]
}
我认为,如果一个端点支持一个查询参数,或者其中的一百个,如果我不试图通过它们进行过滤,我不应该像这样包含它们:
https://my_domain.com/some_path/
(如果你不想过滤就不要使用它)
对方认为所有的查询参数都应该在,空与否。 (如果你包含一个空的查询参数,那么你想要所有 -- 未过滤)
问题是,在方法论/模式方面,什么是“正确”的做法?
编辑:看这里:https://tools.ietf.org/html/rfc3986#section-3.4 我看到对 "key=value" pairs
的引用,而不是带有空值的键
编辑 2:如果可能的话,我想得到一个 Django/DRF 特定的答案(当然,非 Django/DRF 特定的也很好,可以比较)
tl;dr 如果您好奇,这是端点的基本外观:
在视图文件中:
class SomeView(viewsets.ModelViewSet):
filter_class = SomeViewFilter
...
在过滤器文件中:
class SomeViewFilter(django_filters.FilterSet):
...
the_query_parameter = EnumMultipleChoiceFilter(
choices=[(my_val.name,my_val.name) for my_val in SomeIntEnumClass],enum= SomeIntEnumClass,)
EnumMultipleChoiceFilter
只是将名称转换为枚举值,并从 MultipleChoiceFilter
中获取,它的 filter()
在转换值后执行 return super().filter(qs,value)
,或者其中的 none 值案例,与 MultipleChoiceFilter
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。