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

你可能感兴趣的:(request相关问题)