首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >".use“方法对SuperAgent的每个请求添加逻辑

".use“方法对SuperAgent的每个请求添加逻辑
EN

Stack Overflow用户
提问于 2015-05-29 19:46:12
回答 2查看 3.4K关注 0票数 7

这个问题在SuperAgent存储库中提到了对每个请求添加逻辑的.use方法。例如,当令牌可用时,为JWT添加一个Authorization头:

代码语言:javascript
复制
superagent.use( bearer );

function bearer ( request ) {
    var token = sessionStorage.get( 'token' );

    if ( token ) request.set( 'Authorization', 'Bearer ' + token );
}

虽然最后一条评论告诉我们,这个特性又起作用了,但我无法让它正常工作。

以下测试代码:

代码语言:javascript
复制
var request = require( 'superagent' );

request.use( bearer );

function bearer ( request )
{
    // "config" is a global var where token and other stuff resides
    if ( config.token ) request.set( 'Authorization', 'Bearer ' + config.token );
}

返回此错误:

代码语言:javascript
复制
request.use( bearer );
        ^
TypeError: undefined is not a function
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-29 20:10:09

您链接到的问题没有链接到任何提交,所以我们所能做的就是推测该特性是否已经实现,然后删除,或者从一开始就没有实现。

如果您使用阅读src,您将看到use只在Request构造器的原型上定义过,这意味着只有在您开始构建请求如自述文件所示之后才能使用它。

换句话说,这个问题似乎是在谈论一个已经被删除或者根本不存在的特性。您应该使用自述的语法。

代码语言:javascript
复制
var request = require('superagent');

request
.get('/some-url')
.use(bearer) // affects **only** this request
.end(function(err, res){
    // Do something
});

function bearer ( request ){
    // "config" is a global var where token and other stuff resides
    if ( config.token ) {
        request.set( 'Authorization', 'Bearer ' + config.token );
    }
}

当然,您可以创建自己的包装器,这样就不必对每个请求执行包装。

代码语言:javascript
复制
var superagent = require('superagent');

function request(method, url) {
    // callback
    if ('function' == typeof url) {
        return new superagent.Request('GET', method).end(url).use(bearer);
    }

    // url first
    if (1 == arguments.length) {
        return new superagent.Request('GET', method).use(bearer);
    }

    return new superagent.Request(method, url).use(bearer);
} 
// re-implement the .get and .post helpers if you feel they're important..

function bearer ( request ){
    // "config" is a global var where token and other stuff resides
    if ( config.token ) {
        request.set( 'Authorization', 'Bearer ' + config.token );
    }
}

request('GET', '/some-url')
.end(function(err, res){
    // Do something
});
票数 9
EN

Stack Overflow用户

发布于 2016-02-28 13:59:35

最近,发布了包超级剂-用途,以便于设置超级代理请求的全局使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30537899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档