开发者社区> 问答> 正文

SuperAgent如何用get 方法传值

我使用

 request=require('superagent');
 csrftoken=$('meta[name=csrf-token]').attr('content');
 request.get('/auth/~me',headers={'X-CSRFToken': csrftoken, 'content-type': 'application/json', 'Current-User': 'cde5d6s46e465dsa4'}) .end((function(_this){
            return function(err,res) {
                if(res.ok) {
                    console.log(res);
                    switch (res.body.code) {
                        case 0:
                                                ......
                                        }
                                }
                        }
            )(this));

在获取的收获是python

current_user = request.headers.get('Current-User')
if current_user == 'cde5d6s46e465dsa4' and request.method == 'GET':
....

获取后输出的current_user为null method为GET,请问各位老师是request.get里面哪里设置错了吗?该如何修改才能用GET方法让后台获取到cde5d6s46e465dsa4,谢谢。

展开
收起
小旋风柴进 2016-06-07 10:44:36 4828 0
1 条回答
写回答
取消 提交回答
  • superagent 是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下.

    一个简单的post请求,并设置请求头信息的例子

     request
       .post('/api/pet')
       .send({ name: 'Manny', species: 'cat' })
       .set('X-API-Key', 'foobar')
       .set('Accept', 'application/json')
       .end(function(res){
         if (res.ok) {
           alert('yay got ' + JSON.stringify(res.body));
         } else {
           alert('Oh no! error ' + res.text);
         }
       });

    当使用get请求传递查询字符串的时候,用.query()方法,传递一个对象就可以,下面的代码将产生一个/search?

    query=Manny&range=1..5&order=desc请求:
    
     request
       .get('/search')
       .query({ query: 'Manny' })
       .query({ range: '1..5' })
       .query({ order: 'desc' })
       .end(function(res){
    
       });
    或者传一个单独的大对象:
    
    request
      .get('/search')
      .query({ query: 'Manny', range: '1..5', order: 'desc' })
      .end(function(res){
    
      });
    .query()方法也允许传递字符串:
    
    request
        .get('/querystring')
        .query('search=Manny&range=1..5')
        .end(function(res){
    
        });
    或者字符串拼接:
    
    request
        .get('/querystring')
        .query('search=Manny')
        .query('range=1..5')
        .end(function(res){
    
        });
    POST/PUT请求

    一个典型的json post请求看起来就像下面的那样,设置一个合适的Content-type头字段,然后写入一些数据,在这个例子里只是json字符串:

    request.post('/user')
        .set('Content-Type', 'application/json')
        .send('{"name":"tj","pet":"tobi"}')
        .end(callback)
    因为json非常通用,所以就作为默认的Content-type,下面的例子跟上面的一样:
    
    request.post('/user')
        .send({ name: 'tj', pet: 'tobi' })
        .end(callback)
    或者调用多次.send()方法:
    
    request.post('/user')
        .send({ name: 'tj' })
        .send({ pet: 'tobi' })
        .end(callback)
    默认发送字符串,将设置Content-type为application/x-www-form-urlencoded,多次调用将会通过&来连接,这里的结果为name=tj&pet=tobi:
    
    request.post('/user')
        .send('name=tj')
        .send('pet=tobi')
        .end(callback);
    superagent的请求数据格式化是可以扩展的,不过默认支持form和json两种格式,想发送数据以application/x-www-form-urlencoded类型的话,则可以简单的调用.type()方法传递form参数就行,这里默认是json,下面的请求将会postname=tj&pet=tobi内容:
    
    request.post('/user')
        .type('form')
        .send({ name: 'tj' })
        .send({ pet: 'tobi' })
        .end(callback)

    注意:form是form-data和urlencoded的别名,为了向后兼容

    2019-07-17 19:29:32
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
建立联系方法之一 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多