
[英]Nestjs + Swagger: How to add a custom option to @ApiProperty
[英]NestJs Swagger how to add custom favicon
我正在尝试将自定义图标添加到我的 NestJs 文档中。 但是,我对如何解析路径文件有点迷茫,不知道如何实现这一点。
我正在使用 nestjs/swagger 模块版本 3.1.0 并尝试在初始化 Swagger 模块时像这样传递路径文件。
我的main.ts文件
SwaggerModule.setup('/v1/docs', app, document, {
customCss: CUSTOM_STYLE,
customSiteTitle: 'My API Documentation',
customfavIcon: './public/favicon.jpg'
});
搜索了 github 问题,没有发现任何有用的东西。 正如您从代码中看到的那样,我能够修改 CSS styles,但我不知道如何自定义网站图标。
感谢任何帮助
我已使用以下命令将自定义图标添加到我的 swagger 文档中:
您首先要确定的是,在您的main.ts
中,应用程序使用以下内容进行初始化:
const app: NestExpressApplication = await NestFactory.create(...)
要提供 static 内容,您必须使用NestExpressApplication
初始化您的应用程序。
接下来是允许 Nest 应用程序在初始化后使用main.ts
中的以下内容查找公共内容:
app.useStaticAssets(join(__dirname, '..', 'public'));
此外,在应用程序的根目录中创建一个公共目录并将favicon.jpg
文件粘贴到其中。
现在是时候在 main.ts 中初始化main.ts
SwaggerModule.setup('/v1/docs', app, document, {
customCss: CUSTOM_STYLE,
customSiteTitle: 'My API Documentation',
customfavIcon: '../favicon.jpg'
});
如果我们的../favicon.jpg
位于应用程序根目录的src
文件夹中,您必须提供应用程序根目录的相对路径,例如main.ts
。
替代解决方案,只需托管您的网站图标并使用外部 url 引用它
SwaggerModule.setup('api', app, getSwaggerDocument(app), {
...
customfavIcon:
'https://[your-bucket-url].com/.../anything.png',
});
为了迭代 pravindot17 的答案,现在有@nestjs/serve-static
package 用于托管 static 文件。 这避免了我们对 Nest.js 客户端进行类型转换并依赖于我们正在运行 Express 支持的 Nest.js 服务器的隐含假设。
安装 package 后,将其挂接到src/app.module.ts
中。 此配置要求项目的根目录有一个/public/
文件夹,您可以在其中存储 static 资产。
import { Module } from '@nestjs/common';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
@Module({
imports: [
// Host static files in ../public under the /static path.
ServeStaticModule.forRoot({
/**
* Config options are documented:
* https://github.com/nestjs/serve-static/blob/master/lib/interfaces/serve-static-options.interface.ts
*/
rootPath: join(__dirname, '..', '..', 'public'),
serveRoot: '/static',
}),
// ...
})
export class AppModule {}
现在我自己的偏好是使用绝对路径而不是相对路径,因为它使其独立于我们选择的用于托管 API 文档的路径。
SwaggerModule.setup('/v1/docs', app, document, {
customfavIcon: '/static/favicon.jpg'
});
最后要注意的是,此配置从/static/*
托管 static 文件,这样做是为了防止 API 调用不存在的端点向最终用户显示无法找到 ZA81259CEF8E659C6274DF1D45 文件的错误消息。
否则,不存在的端点上的所有 404 将类似于:
{"statusCode":404,"message":"ENOENT: no such file or directory, stat '/Users/me/my-project/public/index.html'"}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.