OpenAPI#

PostgREST自动提供完整的 OpenAPI 有关根路径的说明。这提供了所有端点(表、外部表、视图、函数)的列表,以及支持的HTTP谓词和示例有效负载。

备注

默认情况下,此输出取决于JWT角色声明中包含的角色的权限(或 DB-anon-角色 如果没有发送JWT)。如果需要显示所有终结点,而不考虑角色的权限,请设置 Openapi-模式 配置到 ignore-privileges

对于额外的定制,OpenAPI输出包含每个 SQL comment 在任何数据库对象上。例如,

COMMENT ON SCHEMA mammals IS
  'A warm-blooded vertebrate animal of a class that is distinguished by the secretion of milk by females for the nourishment of the young';

COMMENT ON TABLE monotremes IS
  'Freakish mammals lay the best eggs for breakfast';

COMMENT ON COLUMN monotremes.has_venomous_claw IS
  'Sometimes breakfast is not worth it';

这些令人不快的注释将作为字段出现在生成的JSON中, info.descriptiondefinitions.monotremes.descriptiondefinitions.monotremes.properties.has_venomous_claw.description

另外,如果您希望生成一个 summary 字段您可以通过使用多行注释来执行此操作, summary 将是第一行,而 description 它后面的几行:

COMMENT ON TABLE entities IS
  $$Entities summary

  Entities description that
  spans
  multiple lines$$;

同样,您可以通过对模式进行注释来覆盖API标题。

COMMENT ON SCHEMA api IS
$$FooBar API

A RESTful API that serves FooBar data.$$;

如果您需要包括 securitysecurityDefinitions 选项,请设置 Openapi-安全-活动 配置到 true

您可以使用如下工具 Swagger UI 根据描述创建精美的文档,并托管基于Web的交互式仪表板。该仪表板允许开发人员针对活动的PostgREST服务器发出请求,并提供请求头和示例请求正文的指导。

重要

当模式在运行的服务器下发生更改时,OpenAPI信息可能会过时。看见 架构缓存重新加载

覆盖完整的OpenAPI响应#

您可以用函数结果覆盖整个默认响应。要执行此操作,请将该函数设置为 数据库根规范

db-root-spec = "root"
create or replace function root() returns json as $_$
declare
openapi json = $$
  {
    "swagger": "2.0",
    "info":{
      "title":"Overridden",
      "description":"This is a my own API"
    }
  }
$$;
begin
  return openapi;
end
$_$ language plpgsql;
curl http://localhost:3000
HTTP/1.1 200 OK

{
  "swagger": "2.0",
  "info":{
    "title":"Overridden",
    "description":"This is a my own API"
  }
}