当前位置: 首页 > 面试题库 >

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

郎河
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 该脚本每5秒重新加载或刷新页面一次。但是我想使用jQuery和AJAX调用来做到这一点。可能吗? 问题答案: 正如其他人指出的那样,setInterval和setTimeout可以解决问题。我想强调一点我从Paul Irish的精彩视频中学到的更先进的技术:http : //paulirish.com/2010/10-things-i-learned-from-the- jquery-

  • 问题内容: 我想针对AJAX请求与常规请求以不同的方式处理错误。 如何在Struts2操作中确定请求是否为AJAX? 问题答案: 您应该检查请求标头是否存在并且等于。 请注意,并非所有AJAX请求都具有此标头,例如,请求不发送该标头。如果您是使用(或使用任何其他新的AJAX框架)生成AJAX调用,则该文件就在那里。 您可以使用… 检查它是否存在,例如,当您对Stack Overflow投票时;)

  • 我正在使用实现一个联系人应用程序。现在,我正试图通过发送以下格式的put请求来更新联系人 我将XML作为字符串发送,作为请求的主体。这是我的xmlString(请求主体) 我写了下面的代码来发送更新联系人的PUT请求。 当我试图在中发送请求时,联系人更新成功。但是当我试图运行上面的程序时,我得到了 400错误请求错误 我不知道我哪里出错了。任何帮助都将不胜感激!

  • 我正在使用Mikeal的请求(https://github.com/mikeal/request)向服务器发出https请求。但是,我一直收到CERT_HAS_EXPIRED的授权错误。 我已经尝试将严格SSL设置为true和false,两者输出相同的CERT_HAS_EXPIRED错误。是什么导致了这个问题,有没有办法在nodejs中修复它?

  • 问题内容: 我想检查服务器端是否对我的php页面的请求是ajax请求。 我看到了两种方法可以做到这一点: 第一种方法:在请求中发送一个参数,该参数告诉页面这是AJAX请求(= ) mypage.php: 第二种方式:将标头设置为: 客户端js: mypage.php: 事实是,这两种方法很容易被黑,因此检查我是否收到这样的AJAX请求并不安全。 如何检查我是否收到AJAX请求? 问题答案: 没有确

  • 问题内容: 想象一下,客户端应用程序需要访问Cassandra集群。在Java api中,我们创建一个集群实例,并通过Session发送读取或写入请求。如果我们使用读/写一致性ONE,则api如何选择实际节点(协调器节点)以转发请求。是随机选择吗?请帮忙弄清楚。 问题答案: Cassandra驱动程序使用“ gossip”协议(以及称为节点发现的过程)来获取有关群集的信息。如果某个节点不可用,则客