request相关问题

使用node-request时遇到了些问题,记录一下。

  • 一个有意思的api:caseless
    response.caseless是对response.headers的再加工,如下图所示,通过打印结果可以看出caseless其实是个map对象,这也为啥可以直接通过get获取value的原因response.caseless.get('content-type')
image.png
  • 调试技巧:require('request').debug = true

  • 下载的时候监听dataend事件,并且边收边写入到本地,发现request的回调函数会提前执行,这个时候end事件慢半拍,而且下载完成的文件打不开。

dataend回调函数三者之间的关系及顺序?
示例代码

const url = 'https://puap.qpic.cn/newsapp_ls/0/12689062816/0'
request(url, function (err, res, data) {
    console.log('callback run...')
})
.on('response', response => {
    console.log('statusCode:', response.statusCode)
})
.on('data', chunck => {
    console.log('receive chunck len:', chunck.length)
})
.on('end', () => {
    console.log('request end...')
})
.on('error', error => {
    console.log('error:', error)
})

运行结果:

image.png

当把上面的url对应的是无资源,则可能会出现下面的情况:
image.png

总结:无论response的状态是多少,总是先响应response -> data事件 -> end -> callback

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容