bw-mini-app-server/src/generate-swagger-json.ts

86 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';
import * as fs from 'fs';
async function generateSwaggerJson() {
const app = await NestFactory.create(AppModule, { logger: false });
// 设置API前缀与main.ts保持一致
app.setGlobalPrefix('api/v1', {
exclude: ['docs', 'docs/(.*)'],
});
const config = new DocumentBuilder()
.setTitle('多平台小程序统一后台API')
.setDescription(
`
## 功能特性
- 🔐 统一用户认证 (微信/支付宝/百度/字节跳动等)
- 🎨 AI模板系统 (图片/视频生成)
- 💰 积分系统 (积分获取、消耗、管理)
- 📱 多平台适配 (8大平台支持)
- 🧩 扩展数据存储 (灵活的JSON数据)
## 认证方式
使用JWT Bearer Token进行API认证
## 响应格式
所有API响应都遵循统一格式
\`\`\`json
{
"code": 200,
"message": "success",
"data": {},
"timestamp": 1703001000000,
"traceId": "trace-uuid"
}
\`\`\`
`,
)
.setVersion('1.0.0')
.setContact('开发团队', 'https://example.com', 'dev@example.com')
.setLicense('MIT', 'https://opensource.org/licenses/MIT')
.addBearerAuth(
{
type: 'http',
scheme: 'bearer',
bearerFormat: 'JWT',
name: 'JWT',
description: 'Enter JWT token',
in: 'header',
},
'JWT-auth',
)
.addTag('用户管理', '用户注册、登录、信息管理')
.addTag('平台适配', '各平台特定接口和数据同步')
.addTag('AI模板系统', 'AI图片/视频生成模板管理')
.addTag('积分系统', '积分获取、消耗、查询管理')
.addTag('扩展服务', '预留的扩展功能接口')
.addServer(`http://localhost:${process.env.PORT || 3003}`, '开发环境')
.addServer(
process.env.TEST_SERVER_URL ||
'https://sd2s2bl25ni4n75na2bog.apigateway-cn-beijing.volceapi.com',
'测试环境',
)
.addServer(
process.env.PROD_SERVER_URL ||
'https://sd2s2bl25ni4n75na2bog.apigateway-cn-beijing.volceapi.com',
'生产环境',
)
.build();
const document = SwaggerModule.createDocument(app as any, config);
fs.writeFileSync('./swagger.json', JSON.stringify(document, null, 2));
fs.writeFileSync('./docs/api-spec.json', JSON.stringify(document, null, 2));
console.log('Swagger JSON文档已生成');
console.log('- ./swagger.json');
console.log('- ./docs/api-spec.json');
await app.close();
}
generateSwaggerJson().catch(console.error);