节点请求-如何确定请求期间是否发生错误?
我正在尝试利用node-request模块,但是文档不是那么好。如果我请求有效资源并将其通过管道传输到可写流,则一切正常。但是,如果我向无效对象发出请求,则仍会创建可写流。例如,使用以下代码段:
var x = request("http://localhost:3000/foo.jpg");var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
如果服务器上存在foo.jpg资源,则将数据通过管道传输到流,并在服务器上创建文件。但是,如果服务器 存在foo.jpg
,则仍将创建一个空白容器文件。似乎没有错误事件或可以用来确定请求是否返回404的任何内容。我尝试了以下类似操作:
var x = request("http://localhost:3000/foo.jpg", function(err, response, body) { if(response.statusCode === 200) {
// Success
var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
}
});
并且:
request("http://localhost:3000/foo.jpg", function(err, response, body) { if(response.statusCode === 200) {
// Success
var x = response.request;
var st = fs.createWriteStream("foo.jpg");
x.pipe(st);
}
});
无济于事。这个想法很简单;我只想将URL标识的文件复制到本地服务器。如果请求无效(404等),请不要通过管道传输文件;如果请求有效,则通过管道传输文件。有什么建议?
回答:
我写了请求:)
你可能想试试这个
var r = request(url)r.on('response', function (resp) {
resp.headers
resp.statusCode
r.pipe(new WritableStream())
})
以上是 节点请求-如何确定请求期间是否发生错误? 的全部内容, 来源链接: utcz.com/qa/407545.html