http - http-proxy-middleware 是否适用于无服务器 Lambda?
问题描述
我正在尝试通过无服务器 Lambda 代理外部 API。尝试以下代码示例:http://localhost:3000/users/1返回 200 但正文为空。我必须忽略一些东西,因为http://localhost:3000/users/11返回 404(如预期的那样)。
index.js
'use strict';
const serverless = require('serverless-http');
const express = require('express');
const {
createProxyMiddleware
} = require('http-proxy-middleware');
const app = express();
const jsonPlaceholderProxy = createProxyMiddleware({
target: 'http://jsonplaceholder.typicode.com',
changeOrigin: true,
logLevel: 'debug'
});
app.use('/users', jsonPlaceholderProxy);
app.get('/', (req, res) => {
res.json({
msg: 'Hello from Serverless!'
})
})
const handler = serverless(app);
module.exports.handler = async (event, context) => {
try {
const result = await handler(event, context);
return result;
} catch (error) {
return error;
}
};
无服务器.yml
service: sls-proxy-test
provider:
name: aws
runtime: nodejs12.x
plugins:
- serverless-offline
functions:
app:
handler: index.handler
events:
- http:
method: ANY
path: /
- http: "ANY {proxy+}"
包.json
{
"name": "proxy",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"sls": "sls",
"offline": "sls offline start"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "4.17.1",
"http-proxy-middleware": "1.0.1",
"serverless-http": "2.3.2"
},
"devDependencies": {
"serverless": "1.65.0",
"serverless-offline": "5.12.1"
}
}
解决方案
尝试从内部侦听器transfer-encoding
的响应中删除标头onProxyRes
createProxyMiddleware
const jsonPlaceholderProxy = createProxyMiddleware({
onProxyRes: function (proxyRes, req, res) { // listener on response
delete proxyRes.headers['transfer-encoding']; // remove header from response
},
// remaining code
推荐阅读
- python - 如何使用python和selenium访问iframe内的html内的图像标签
- c++ - 如何在约束中使用 ADL?
- java - 使用 Java 的 StreamLabs 套接字 API
- wpf - MVVM / PRISM:对话框字符串应该存储在哪里?
- mysql - 在 Debian 操作系统上设置 WIki。安装后配置有问题
- java - 具有排序数组列表的最小优先级队列插入实现
- vue.js - Nuxtjs data() 变量不能改变
- ios - 刷新后停止 Diffable Data Source 滚动到顶部
- reactjs - InfoWindow 正在使用 react-google-maps 显示两个信息窗口
- python - 如何根据值更新字典键?