如何在Swagger中传入路径数组以减少重复代码?
问题根因
Swagger OpenAPI 3 规范明确要求paths属性必须为对象类型,键是接口的请求路径,值是对应路径的请求方法、参数、响应等定义。你当前直接将数组类型的paths赋值给配置项,不符合规范,因此无法正常解析。
修复方案
你只需要将拆分的路径数组合并为单个对象即可,推荐用reduce方法实现,支持你后续扩展多文件拆分的路径定义:
const paths = [ { "/user/my-account": { get: { responses: { "200": { description: "Fetched Account successfully", }, "404": { description: "No Account was found", }, }, }, }, }, // 后续你拆分的其他路径对象都可以放到这个数组里 // 比如从不同模块导入的路径定义:import orderPaths from './paths/order.js' 直接加到数组即可 ]; // 数组合并为符合规范的paths对象 const mergedPaths = paths.reduce((accumulator, currentPathObj) => { return Object.assign(accumulator, currentPathObj); }, {}); const swaggerConfig = { openapi: "3.0.0", info: { version: "0.0.1", title: "Swagger UI", description: " Swagger UI", }, servers: [ { url: "http://localhost:4000/", description: "Local server", }, ], // 替换为合并后的对象 paths: mergedPaths, }; export default swaggerConfig;
验证
修改完成后重启Node服务,打开Swagger UI页面即可看到所有接口正常展示。
内容的提问来源于stack exchange,提问作者user16583522
相关产品推荐
相关产品推荐

