元数据

REST framework 包含一个可配置的机制,用于确定 API 如何响应 请求。这使你可以返回 API schema 或其他资源信息。

对于 HTTP OPTIONS 请求应该返回哪种风格的响应,目前还没有任何被广泛采用的约定,所以我们提供了一种专门的风格来返回一些有用的信息。

下面是一个示例响应,演示默认返回的信息。

  1. 'DEFAULT_METADATA_CLASS': 'rest_framework.metadata.SimpleMetadata'
  2. }

或者你可以单独设置一个视图的元数据类:

REST framework 包只包含一个名为 的元数据类实现。如果你想使用另一种风格,你需要实现一个自定义的元数据类。

如果你对创建通过常规 GET 请求访问的 schema 端点有特定要求,则可以考虑重新使用元数据 API 来实现此目的。

  1. @list_route(methods=['GET'])
  2. def schema(self, request):
  3. data = meta.determine_metadata(request, self)
  4. return Response(data)

有几个原因可以选择采用这种方法,包括 响应不能缓存。


自定义元数据类

如果你想提供一个自定义的元数据类,你应该继承 BaseMetadata 并且实现 determine_metadata(self, request, view) 方法。

你可能想要做的事情包括返回 schema 信息,使用 JSON schema 等格式,或将调试信息返回给管理员用户。

然后配置你的设置以使用此自定义类:

  1. REST_FRAMEWORK = {
  2. 'DEFAULT_METADATA_CLASS': 'myproject.apps.core.MinimalMetadata'