express - 使用 API 网关设置 swagger-ui-express
问题描述
我无法弄清楚我的 API 网关或 swagger-ui-express 的正确设置。lambda 函数运行成功并返回 html,但相关资源无法加载并出现 404 错误。
const app = express();
const swaggerUI = require('swagger-ui-express');
const serverlessExpress = require('@vendia/serverless-express');
const Stage = process.env.Stage;
const apiId = process.env.apiId;
const options = {
customCss: '.swagger-ui .topbar { display: none }',
customCss: '.swagger-ui .topbar { background-color: red }'
}
let serverlessExpressInstance
async function asyncTask() {
// load latest spec from API Gateway export removed to simplicity reasons.
const swaggerDocument = spec;
console.log("load swagger file complete.");
return swaggerDocument
}
async function setup(event, context) {
const swaggerDocument = await asyncTask()
console.log(swaggerDocument)
app.use('/api-doc', swaggerUI.serveWithOptions({ redirect: false }));
app.use('/api-doc', swaggerUI.setup(swaggerDocument, options));
console.log("setup of swagger complete");
serverlessExpressInstance = serverlessExpress({ app })
return serverlessExpressInstance(event, context)
}
function handler(event, context) {
if (serverlessExpressInstance) return serverlessExpressInstance(event, context)
return setup(event, context)
}
exports.handler = handler
API Gateway 上的设置如下:
这两个资源都指向 lambda 函数。当我通过以下方式加载页面时: https://.execute-api..amazonaws.com/dev/api-doc 出现以下错误:
如何确保通过正确的路径正确加载资源 ...dev/api/doc/...
解决方案
推荐阅读
- python - 为什么 Django 模板会阻止 HTML 自动完成功能?
- python - 尝试安装 MySQL 客户端时,导入 sys、setuptools、tokenize 时出现此错误
- kotlin - Kotlin 中的管道
- node.js - Nodemon 在每次更改时重新启动,而不是在保存时
- sql - 插入更新另一个表后创建触发器
- angular - Vanilla ASP.NET Core 项目对每个请求都有 2 秒的延迟
- javascript - 在 React 中按状态状态关闭选项卡时显示消息
- excel - 在 VBA 中运行求解器后尝试复制和粘贴范围时出现运行时错误“1004”
- python - Django CSS 未加载
- java - Java中的泛型传播