使用node-request时遇到了些问题,记录一下。
- 一个有意思的api:
caseless
response.caseless
是对response.headers
的再加工,如下图所示,通过打印结果可以看出caseless
其实是个map对象,这也为啥可以直接通过get获取value的原因response.caseless.get('content-type')
调试技巧:
require('request').debug = true
下载的时候监听
data
、end
事件,并且边收边写入到本地,发现request的回调函数会提前执行,这个时候end
事件慢半拍,而且下载完成的文件打不开。
data
、end
、回调函数
三者之间的关系及顺序?
示例代码
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)
})
运行结果:
当把上面的url对应的是无资源,则可能会出现下面的情况:
总结:无论response的状态是多少,总是先响应
response
-> data
事件 -> end
-> callback