完善订单相关逻辑和商品推荐逻辑,添加接口注释

This commit is contained in:
dzl
2025-10-17 17:26:37 +08:00
parent f9a757046c
commit e535e8a9c5
6 changed files with 619 additions and 103 deletions

View File

@@ -88,6 +88,95 @@ const limiter = rateLimit({
});
app.use('/api', limiter);
// ============ 添加 Swagger 文档路由 ============
const swaggerUi = require('swagger-ui-express');
const specs = require('./swagger');
// 创建自定义的 HTML 页面来解决兼容性问题
const swaggerHtml = `
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>融豆商城 API文档</title>
<link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui.css" />
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
.swagger-ui .topbar {
display: none;
}
.swagger-ui .info .title {
color: #3b4151;
font-family: sans-serif;
font-size: 36px;
margin: 0;
}
</style>
</head>
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui-bundle.js"></script>
<script src="https://unpkg.com/swagger-ui-dist@4.15.5/swagger-ui-standalone-preset.js"></script>
<script>
// 兼容性处理
if (!Object.hasOwn) {
Object.hasOwn = function(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
};
}
window.onload = function() {
const ui = SwaggerUIBundle({
url: '/api-docs.json',
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
persistAuthorization: true
});
window.ui = ui;
}
</script>
</body>
</html>
`;
// 自定义 Swagger 路由
app.get('/api-docs', (req, res) => {
res.send(swaggerHtml);
});
// 提供 JSON 格式的文档
app.get('/api-docs.json', (req, res) => {
res.setHeader('Content-Type', 'application/json');
res.send(specs);
});
// ============ Swagger 配置结束 ============
// 静态文件服务 - 必须在API路由之前
// 为uploads路径配置CORS和静态文件服务
app.use('/uploads', express.static(path.join(__dirname, 'uploads'), {