配置

这个界面没有构建时配置:它完全在运行时通过一条规则(外加一个覆盖项)来解析要渲染的 spec。

一条规则,一个覆盖项

SourceWhenExample
GET /api-json默认:与 @nestjs/swaggerSwaggerModule.setup() 在 Swagger UI 旁边暴露的地址一致https://api.example.com/docs → fetches https://api.example.com/api-json
?spec=<url>查询参数:存在时优先于默认值https://docs.example.com/?spec=https://api.example.com/api-json

跨源时的 CORS

如果这个界面部署在和 API 不同的源上,使用 ?spec= 覆盖项,并确保 API 的 CORS 配置允许该来源 GET 这份 JSON 文档。

同源这个问题在执行请求时还会再次出现:它的代理如何完全绕开 CORS,且不涉及 API 自身的配置,见 Try it out

多份 spec

specs 传给 DocfyUiModule.setup(),让用户可以在不离开界面的情况下切换多份 OpenAPI 文档,适合一个 docfy-ui 实例需要覆盖多个服务的场景:

main.ts
DocfyUiModule.setup('/docs', app, {
  specs: [
    { name: 'Users service', url: 'https://users.example.com/api-json' },
    { name: 'Orders service', url: 'https://orders.example.com/api-json' },
  ],
});

每个 url 都在客户端拉取,方式和默认的 /api-json spec 完全一样(是否同源都取决于该来源自身的 CORS 策略)。只有配置了两份或更多 spec 时,侧边栏才会出现下拉选择器。完全省略 specs 时,docfy-ui 的行为和之前一样,不会渲染任何切换器。