我试图在节点js中构建一个拦截器,但到目前为止我还没有得到它。我想拦截器,捕获每个请求并添加一个自定义头,从koa上下文中恢复。
我的意思是,例如,如果您使用请求承诺执行http请求,我想自动添加自定义标头并将其传播到命运。
有人知道吗?
答案 0 :(得分:1)
拦截器基本上是中间件。
// before all
app.use(function *(next) {
this.set('x-new-header', 'value');
yield next;
});
// the rest
app.use(routes());
如果您的Koa应用程序的行为类似于反向代理。您可以使用pipe
API将新标头传播到远程服务器。
// before all
app.use(function *(next) {
this.set('x-new-header', 'value');
yield next;
});
// the reverse-proxy
const request = require('co-request');
app.use(function *() {
this.body = this.req.pipe(request(config));
});