【发布时间】:2020-11-30 09:04:15
【问题描述】:
我有一个 API 端点来获取用户添加的所有项目,它返回一个用户添加的所有对象的 JSONArray。
curl 127.0.0.1:8000/api/products/ -H "Authorization: Token xxxxxxxxx"
响应看起来像这样:
[{"url":"http://127.0.0.1:8000/api/products/18/","item_name":"ABC","barcode":"","item_price":5,"usr":"http://127.0.0.1:8000/auth/users/73/"},
{"url":"http://127.0.0.1:8000/api/products/19/","item_name":"PQR","barcode":"123456","item_price":85,"usr":"http://127.0.0.1:8000/auth/users/73/"},...]
现在,我只想检索条形码值为 123456 的对象,即具有“item_name:PQR”的对象。 因此,我尝试在 curl 中使用 'WHERE' 子句,如下所示:
curl 127.0.0.1:8000/api/products?barcode=123456 -H "Authorization: Token xxxxxxxxx"
我收到的是 301 响应,而不是合适的对象。据我所知,3xx 范围内的响应代码意味着可以选择一个的多个响应。 解决此问题的解决方法是什么? 预期输出:
[{"url":"http://127.0.0.1:8000/api/products/19/","item_name":"PQR","barcode":"123456","item_price":85,"usr":"http://127.0.0.1:8000/auth/users/73/"}]
(or)
{"url":"http://127.0.0.1:8000/api/products/19/","item_name":"PQR","barcode":"123456","item_price":85,"usr":"http://127.0.0.1:8000/auth/users/73/"}
我为端点设置的模型视图:
class ProductViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = ProductModel.objects.all()
serializer_class = ProductSerializer
def get_queryset(self):
user = self.request.user
queryset = super().get_queryset()
queryset = queryset.filter(usr=user)
return queryset
提前致谢。
【问题讨论】:
标签: json django api curl endpoint