完善订单相关逻辑和商品推荐逻辑,添加接口注释
This commit is contained in:
89
server.js
89
server.js
@@ -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'), {
|
||||
|
||||
Reference in New Issue
Block a user