target: API
的请求到目前为止,这是我的中间件的样子,我能够捕获符合条件的选定请求:
function apiHelmet(req, res, next) {
if (req.get('target') === 'API') {
/*
find a way to redirect requests of all methods and pipe result to response
*/
return res.send(response_from_external_api)
}
return next()
}
我的设置:
app.use(apiHelmet)
app.get('*', renderSPA)
示例发布请求:
axios({
method: 'POST',
data: { id: 123, first_name: 'john', last_name: 'doe' },
url: '/users',
headers: {
target: 'API'
}
} ).then(result=>console.log(result))
答案 0 :(得分:1)
尝试此操作,使用请求模块调用另一个外部API,并将外部API响应直接传递给您的服务器响应。
var request = require('request');
app.use(apiHelmet)
app.get('*', function (req, res, next) {
req.pipe(request('SOME URL').on('error', function (err) {
return res.status(400).send(err)
})).pipe(res);
});
答案 1 :(得分:-1)
您可以使用以下代码轻松完成此操作。
function apiHelmet(req, res, next) {
if (req.get('target') === 'API') {
return res.send('caught ya')
req.post({url: 'http://end-point', headers: req.headers, body: req.body});
processRequest(req);
res.setHeader('Content-Type', 'application/json');
res.send('Req OK');
}
return next()
}
有关详情see。