使用节点请求管道图像,但在非200 http状态代码上中止

时间:2017-09-30 19:22:49

标签: node.js node-request

我试图使用node-request管道存储在Amazon S3上的图像。然而,有时候图像不存在,由S3作为状态代码403暴露出来。我很难看到如果能够成功管道(200),但是如果是一个非200。

使用abort()方法似乎是一种方法,但获得r.abort is not a function,即使它应该在请求中可用。

// context: inside a request handler, where `res` is the response to write to
const r = request(url)
  .on('response', function (response) {
    if (response.statusCode !== 200) {
      r.abort(); //failing
      // I want to stop the piping here and do whatever instead.
    }
  })
  .pipe(res);

思想?

1 个答案:

答案 0 :(得分:5)

回答我自己的问题:在确定正确之前不要开始配管:

 request(url)
    .on('response', function (r) {
      if (r.statusCode !== 200) {
        //take other action
      }
      r.pipe(res);
    })