具有授权的节点JS POST方法

时间:2010-08-28 12:52:35

标签: api httpclient node.js

我无法在文档中找到有关如何执行此操作的任何内容。

http://nodejs.org/api.html#request-method-149

我需要在ruby中使用与此类似的授权创建一个Node js POST:

url = URI.parse('http://www.example.com/todo.cgi')
    req = Net::HTTP::Post.new(url.path)
    req.basic_auth 'jack', 'pass'

我试图基本上这样做:

var client = http.createClient(80, 'http://api.foo.com');
  var rq = client.request('POST', '/path/', 
  {
    'authorization' : [account, password]
    'key': value,
    etc....
  }

2 个答案:

答案 0 :(得分:3)

只需使用account:password对base64中的字符串Buffer进行编码,然后设置标题为Authorization的标题,前缀为Basic

答案 1 :(得分:2)

这是一个让我们更无知的例子(可以进行改进!)。适用于twitter的流媒体API。在提出请求时,按照惯例听取响应和数据。

var hackClient = http.createClient(80, 'stream.twitter.com');
var request = hackClient.request("GET", '/1/statuses/filter.json?'+querystring.stringify(params),{
    "Host":"stream.twitter.com",
    "Authorization":"Basic " + new Buffer('user' + ":" + 'pass').toString('base64'),
    "User-Agent": "Twitter-Node"
});
request.on('response', function(response) {
    response.on('data', function(chunk) {
        stream.receive(chunk); //example usage, no stream object in this example exists
    });
    response.on('error', function(error) {
        stream.emit('error', error); //again, for example
    });
    response.on('end', function () {
        stream.emit('end');
    });
});
request.on('error', function(error) {
    stream.emit('error', error);
});