Deploy: DocfyUiModule vs standalone
既可以从暴露 API 的同一个 NestJS 应用中提供服务,也可以作为静态资源包部署在任意静态托管上。
安装
bash
npm install docfy-ui这个包自带一份预构建好的静态资源包(dist/):没有需要装在 Node 后端上的服务端代码。如果你在用 nestjs-docfy,它的 DocfyUiModule.setup() 已经帮你把这一切封装好了;否则,用任意静态文件服务器提供 dist/ 目录即可。
通过 DocfyUiModule.setup()
如果你的后端是 NestJS,最简单的方式就是让 nestjs-docfy 帮你挂载这个包。
ts
import { NestFactory } from "@nestjs/core";
import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger";
import { DocfyUiModule } from "nestjs-docfy";
const app = await NestFactory.create(AppModule);
DocfyUiModule.setup("/docs", app); // before SwaggerModule.setup
const document = SwaggerModule.createDocument(app, new DocumentBuilder().build());
SwaggerModule.setup("api", app, document); // exposes /api-json, which docfy-ui fetches by default
await app.listen(3000);访问 /docs:不需要额外配置。
独立部署(静态)
不用 nestjs-docfy 的话,自己构建并提供静态资源,并指向任意一份 OpenAPI 文档:
bash
npm run build # in this package, or use the prebuilt dist/ from npm用任意静态托管(NestJS 的 ServeStaticModule、Nginx、S3 + CloudFront 等)提供 dist/,可以和暴露 spec 的 API 部署在一起,也可以放在它前面。
指向一份远程 spec
如果 spec 部署在不同的源上,使用 ?spec=<url> 覆盖项(见「配置」)。