Django-REST-Framework:验证GET请求参数?

我有/ GET / request的API端点,它需要一些必需的参数,比如/ resources /?bag_id = 11

bag_id表示应用程序中的Bag对象.
在我的场景中,这是我想要处理此调用的方式:

1)如果没有提供bag_id作为url的一部分,则引发错误,说’bag_id’是必需参数.

2)如果提供了bag_id,那么检查是否存在Bag对象,如果没有,则提出错误,说“找不到包”.

我想知道哪个可能是正确处理这个问题的地方:

我应该覆盖list()并处理那些或其他地方的情况吗?哪个是检查这两个条件的正确位置?

最佳答案 对于第一个问题:您正在描述一个URL,该URL将从您的后端提供.如果URL不存在,那么响应应该是404,对吗?或者,如果您要构建一个浏览网址结构,那么没有ID的网址上的GET应该会返回项目列表.

在哪里检查条件:无处 – 框架为您执行此操作.

对于第二个问题:您可以通过在url定义中使用RegEx来验证id的形式.如果服务器上不存在该资源,那么有几个关于正确答案的争论:404或200,其中包含标题或内容中的描述.我的建议:您要求服务器上存在不存在的资源 – 您应该回答404.
在哪里检查条件:无处 – 框架为您执行此操作.

点赞