rest.getJSON(options, function(statusCode, result) {
// I could work with the result html/json here. I could also just return it
console.log("onResult: (" + statusCode + ")" + JSON.stringify(result));
res.statusCode = statusCode;
res.send(result);
});
var http = require('http');
var options = {
host: 'www.google.com',
path: '/index.html'
};
var req = http.get(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
// Buffer the body entirely for processing as a whole.
var bodyChunks = [];
res.on('data', function(chunk) {
// You can process streamed parts here...
bodyChunks.push(chunk);
}).on('end', function() {
var body = Buffer.concat(bodyChunks);
console.log('BODY: ' + body);
// ...and/or process the entire body here.
})
});
req.on('error', function(e) {
console.log('ERROR: ' + e.message);
});
var requestify = require('requestify');
requestify.get('http://example.com/api/resource')
.then(function(response) {
// Get the response body (JSON parsed or jQuery object for XMLs)
response.getBody();
}
);
var get = require('simple-get');
get('http://example.com', function (err, res) {
if (err) throw err;
console.log(res.statusCode); // 200
res.pipe(process.stdout); // `res` is a stream
});
12 回答
这是我的一个样本的代码 . 它是异步并返回一个JSON对象 . 它可以做任何获取请求 . 请注意,有更多的最佳方式(只是一个示例) - 例如,而不是连接您放入数组并加入它的块等...希望它能让您开始朝着正确的方向前进:
通过创建选项对象来调用它,例如:
并提供回调函数 .
例如,在服务中,我需要上面的其余模块,然后执行此操作 .
更新:
如果你正在寻找async await(线性无回调),promises,编译时支持和intellisense,我们创建一个适合该账单的轻量级http和rest客户端:
Microsoft typed-rest-client
尝试在node.js中使用简单的http.get(options, callback) function:
还有一个通用http.request(options, callback) function,它允许您指定请求方法和其他请求详细信息 .
Request和Superagent是非常好的库 .
使用
request
:您还可以使用Requestify,这是我为nodeJS编写的非常简单且非常简单的HTTP客户端,它支持缓存 .
只需对GET方法请求执行以下操作:
Unirest是我想要成为多平台框架的最佳库,因此如果您需要在Ruby,PHP,Java,Python,Objective C,.Net或Windows上使用HTTP客户端,那么了解它如何在Node上工作将很有用 . 8也是 . 据我所知,unirest库主要由现有的HTTP客户端支持(例如在Java,Apache HTTP客户端,在Node上,Mikeal's Request libary) - Unirest只是将更好的API放在首位 .
以下是Node.js的几个代码示例:
你可以直接跳到Node docs here
看看shred . 它是由spire.io创建和维护的节点HTTP客户端,用于处理重定向,会话和JSON响应 . 它非常适合与其他API交互 . 有关详细信息,请参阅this blog post .
看看httpreq:这是我创建的节点库,因为我很沮丧,那里没有简单的http GET或POST模块;-)
此版本基于最初由bryanmac函数提出的函数,它使用promises,更好的错误处理,并在ES6中重写 .
因此,您不必传入回调函数,而是getJSON()返回一个promise . 在以下示例中,该函数在ExpressJS路由处理程序中使用
出错时,它将错误委托给服务器错误处理中间件 .
如果您只需要进行简单的get请求而不需要支持任何其他HTTP方法,请查看:simple-get:
看看请求模块 . 请参考这里http://www.sitepoint.com/making-http-requests-in-node-js/
使用reqclient:不是为
request
或许多其他库的脚本目的而设计的 . 当你需要一次又一次地重复使用相同的配置时,Reqclient允许在构造函数中指定许多有用的配置:基本URL,头,auth选项,日志选项,缓存等 . 还有一些有用的功能,如查询和URL解析,自动查询编码和JSON解析等使用该库的最佳方法是创建一个模块来导出指向API的对象以及连接所需的配置:
模块
client.js
:在需要使用API的控制器中使用如下:
reqclient
支持许多功能,但它有一些其他库不支持:OAuth2 integration和logger与cURL syntax集成,并始终返回本机Promise对象 .