响应主体中的REST API过滤器选项

问题描述 投票:0回答:1

我正在尝试基于已设置的过滤器显示REST端点的其余可能的过滤器选项。

关于如何设计REST API的某种最佳实践,可以让客户端知道其余选项吗?

想到这种事情。

{
  "count": 131,
  "next": "2",
  "previous": null,
  "filters": {
    "status": [
      1,
      2,
      99
    ],
    "...": [
      "..."
    ]
  },
  "results": [
    {
      "id": 1,
      "status": 1,
      "...": ".."
    },
    {
      "id": 1,
      "status": 2,
      "...": "...."
    }
  ]
}
rest django-rest-framework
1个回答
0
投票

让用户知道可以将哪些过滤器添加到端点的最佳方法是使用SwaggerRedoc创建API文档。

为了让客户端知道他们可以为端点添加哪些过滤器,请将文档发送给他们,使他们可以确切地了解如何使用它。

您是否还有其他要在响应中发送给他们的特定用例?

如果必须在正文中发送过滤器,则可以创建一个FilterMixin并将其放在要具有此功能的所有ViewSets上,然后覆盖list功能。一个例子就是这样的东西:

class FiltersMixin:
    def list(self, request, *args, **kwargs):
        data = super().list(request, *args, **kwargs)
        remaining_filters = list(set(self.filter_fields) - set(self.request.query_params.keys())
        return {"filters": remaining_filters, **data}

如果使用ViewSet属性将视图集上的滤镜添加到filter_fields上,则可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.