【发布时间】:2018-11-13 10:37:50
【问题描述】:
- 我有一个 expressjs 服务器实例正在运行,它为 SPA 提供服务。
- 我的 API 位于另一台服务器上,因此我需要退回我的 API 请求。
- 我想创建一个中间件,在满足特定条件时将所有这些请求重定向到另一台主机。
- 要处理的请求是请求标头中带有
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))
【问题讨论】:
-
你到底是什么意思?快速路由中间件看起来像 'the/url/path/', middleware1, middleware2, (req, res) => {})
-
请看我的编辑@noa-dev
-
根据我的经验,使用路径 (
/api) 比使用标题更常见,然后您可以直接放入现有工具,例如 github.com/chimurai/http-proxy-middleware(我认为您无论如何都可以使用自定义匹配过滤器,但路径更简单)。
标签: javascript node.js express url-redirection