如何使用Node.js进行外部HTTP请求

Pie*_*rre 82 http node.js

问题很简单.我想使用Node.js服务器作为代理来记录,验证和转发HTTP查询到后端HTTP服务器(PUT,GET和DELETE请求).

我应该为此目的使用什么库?我怕我找不到一个.

cho*_*ovy 134

NodeJS支持http.request作为标准模块:http://nodejs.org/docs/v0.4.11/api/http.html#http.request

var http = require('http');

var options = {
  host: 'example.com',
  port: 80,
  path: '/foo.html'
};

http.get(options, function(resp){
  resp.on('data', function(chunk){
    //do something with chunk
  });
}).on("error", function(e){
  console.log("Got error: " + e.message);
});
Run Code Online (Sandbox Code Playgroud)

  • 我建议添加`resp.setEncoding('utf8');`(或你正在使用的任何编码)来获取数据作为utf8字符串.如果我理解正确,否则你将获得Buffer对象,如果将多字节字符拆分为两个块,可能最终会遇到多字节字符问题.(刚刚调试了一段相关的问题) (10认同)
  • 我实际上已经开始使用`request` npm模块了. (8认同)

hro*_*oss 7

我会结合node-http-proxyexpress.

node-http-proxy将支持您的node.js Web服务器内的代理RoutingProxy(请参阅另一个http服务器中称为代理请求的示例).

在自定义服务器逻辑中,您可以使用express进行身份验证.有关示例,请参阅此处auth示例.

结合这两个例子可以给你你想要的.


evi*_*ery 5

您可以使用内置http模块执行此操作http.request().

但是,如果要简化API,可以使用superagent等模块

  • 真的很健全.我不责怪节点只提供低级API,但开始处理数据块只是简单烦人. (3认同)