const express = require('express'); const cors = require('cors'); const swaggerUi = require('swagger-ui-express'); const logger = require('./config/logger'); const swaggerSpec = require('./config/swagger'); const routes = require('./routes'); const { notFound, errorHandler } = require('./middlewares/errorHandler'); /** * 创建 Express 应用 */ function createApp() { const app = express(); // 中间件配置 app.use(cors()); // 跨域支持 app.use(express.json()); // JSON 解析 app.use(express.urlencoded({ extended: true })); // URL 编码解析 app.use(logger); // 日志记录 // API 文档 - Swagger UI app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec, { explorer: true, customCss: '.swagger-ui .topbar { display: none }', customSiteTitle: 'Steel Prices Service API Documentation', swaggerOptions: { persistAuthorization: true, displayRequestDuration: true, docExpansion: 'list', filter: true, showRequestHeaders: true, tryItOutEnabled: true } })); // 路由 app.use('/', routes); // 错误处理 app.use(notFound); app.use(errorHandler); return app; } module.exports = createApp;