gpt4 book ai didi

javascript - Express JS 通配符路由代理

转载 作者:行者123 更新时间:2023-11-30 16:34:17 34 4
gpt4 key购买 nike

我正在使用 express-http-proxy 来代理后端服务器。我希望所有对/proxy 即/proxy/apples/brand 或/proxy/oranges/brand/nnnn 等的请求都被代理到后端服务。

所以,我在这里设置了一个通配符代理。

    'use strict';

var express = require('express');

var proxy = require('express-http-proxy');

var app = express();

// ""

app.use('/proxy*', proxy('https://backend-server.com/' ,{
forwardPath: function(req, res) {
console.log(req.url)
return require('url').parse(req.url).path;
}
}));



var port = 3000;

app.listen(port, function() {
console.log('listening on port ' + port + '.')
});

我期待这个 https://localhost:3000/proxy/oranges/brand/nnnn被代理到https://backend-server.com/oranges/brand/nnnn

但我刚刚得到

Cannot GET /proxy/aa

.我不确定这里出了什么问题。通配符路由看起来还不错。这里有什么想法吗?

最佳答案

你可以试试 request 模块。这个解决方案非常适合我

var request = require( 'request' );
app.all( '/proxy/*', function( req, res ){
req.pipe( request({
url: config.backendUrl + req.params[0],
qs: req.query,
method: req.method
}, function( error, response, body ){
if ( error )
console.error( 'Wow, there is error!', error );
})).pipe( res );
});

或者如果你仍然想使用 express-http-proxy 你需要写

app.use( '/proxy/*', proxy('https://backend-server.com/', {
forwardPath: function( req, res ){
return req.params[0];
}
}));

关于javascript - Express JS 通配符路由代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32905500/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com