Node.js NodeJs代理问题转发POST/DELETE请求

Node.js NodeJs代理问题转发POST/DELETE请求,node.js,angular,http,nodejs-server,Node.js,Angular,Http,Nodejs Server,我正在尝试创建一个NodeJs代理,该请求对于“GET”请求可以正常工作,但是当我尝试相同的请求时失败,但是使用“Post”/“Delete”请求 我不确定它是与前端相关还是与后端相关:( 你知道怎么修吗 constbodyparser=require('body-parser'); const express=require('express'); const morgan=要求(“摩根”); const{createProxyMiddleware}=require('http-proxy-

我正在尝试创建一个NodeJs代理,该请求对于“GET”请求可以正常工作,但是当我尝试相同的请求时失败,但是使用“Post”/“Delete”请求

我不确定它是与前端相关还是与后端相关:(

你知道怎么修吗

constbodyparser=require('body-parser');
const express=require('express');
const morgan=要求(“摩根”);
const{createProxyMiddleware}=require('http-proxy-middleware');
const jsonParser=bodyParser.json()
常量app=express();
常数端口=3003;
const HOST=“localhost”;
常量API_服务_URL=”http://127.0.0.1:3333";
应用程序使用(摩根(“开发”);
use(bodyParser.json());
应用程序使用((请求、恢复、下一步)=>{
res.header('Access-Control-Allow-Origin','*');
next();
});
//代理端点
使用('/api',createProxyMiddleware({
目标:API_服务_URL,
来源:对,
路径重写:{
[`^/api`]:'',
},
}));
//启动代理
应用程序侦听(端口、主机,()=>{
log(`Starting Proxy at${HOST}:${PORT}`);

})
我以前遇到过这个问题,但在我的例子中,我使用的主体解析器不是,但是我相信问题是一样的

主要问题是,大多数express body解析器中间件都会以某种方式修改HTTP POST正文。这意味着,当代理中间件收到您的请求时,请求将被破坏,这将导致代理请求失败

修复方法是简单地删除主体解析器:

// Comment or better yet, delete the following line:
// app.use(bodyParser.json()); 
完成此操作后,您将发现代理中间件再次用于POST和DELETE请求

如果您需要路由的主体解析器,请仅为该路由安装主体解析器。在应用程序中安装主体解析器会破坏代理中间件:

// If you need a body parser:

app.post('/hello', bodyParser.json(), (req, res) => {
    // body parser is enabled only for this endpoint
});

// Or you can install it for entire routes:

let router = express.Router();

router.use(bodyParser.json());
router.post('/hello', (req,res) => {
    // body parser is enabled here
});

app.use('/with-parser',router);