配置
这个界面没有构建时配置:它完全在运行时通过一条规则(外加一个覆盖项)来解析要渲染的 spec。
一条规则,一个覆盖项
| Source | When | Example |
|---|---|---|
GET /api-json | 默认:与 @nestjs/swagger 中 SwaggerModule.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 的行为和之前一样,不会渲染任何切换器。