节点请求-如何确定请求期间是否发生错误?

我正在尝试利用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

回到顶部