我正在实现一个REST API框架,我想知道当客户端提交无效的查询字符串参数时,推荐行为是什么.
我将用一个具体的例子来说明我的意思:说,我在/ api/contacts/endpoint上有一个API处理程序,并且处理程序提供了一个名为querystring的过滤器id,它使客户能够使用提供的ID选择某些联系人.
因此,GET或DELETE请求可能是/api/contacts/?id=2&id=4&id=lalalala.
显然,没有联系方式id=lalalala.在这种情况下,服务器应该是什么样的?
忽略无效的联系人id=lalalala,仅过滤有效ID,2和4上的联系人.
回复指示此错误的错误代码.如果是,应提供哪个错误代码?
提前致谢.
编辑:澄清; 我开发的框架的主要焦点是具有可预测的行为,因此具有响应代码.出于这个原因,我希望客户端使用基于此框架构建的API,以期获得最少的意外.所以,问题基本上是:在这种情况下API应该返回错误(如果是,那么)?或者忽略无效的过滤条目,只过滤正确的查询字符串参数?
在我看来,在 Django 的基于类的通用视图中,参数request和argskwargs传输,既作为视图实例属性,又作为方法参数。
我到底是什么意思?
Class django.views.generic.base.View,定义了以下函数,由其as_view方法调用:
def view(request, *args, **kwargs):
self = cls(**initkwargs)
if hasattr(self, 'get') and not hasattr(self, 'head'):
self.head = self.get
self.request = request
self.args = args
self.kwargs = kwargs
return self.dispatch(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
该函数首先将request、args和设置为视图实例属性,然后使用所有这些作为参数kwargs调用视图的方法。dispatch如果有的话,这样做的具体目的是什么?这不是多余的吗?
我正在研究API,我有一个问题.我正在研究select_related()的用法,以便为自己保存一些数据库查询,实际上它确实有助于减少执行的数据库查询量,以及大型和更复杂的查询.
我的问题是,使用select_related()会导致heasvier内存使用吗?运行一些实验我注意到确实是这种情况,但我想知道为什么.无论我是否使用select_related(),响应都将包含完全相同的数据,那么为什么使用select_related()会导致使用更多的内存?
是因为缓存吗?也许使用单独的数据对象来缓存相同的模型实例?我不知道还有什么想法.
提前致谢.