关于爬虫中所用到的请求拦截器和响应拦截器
1、首先我们看一下,axios的发包
axios = require('axios') //导入axios包 //用axios发包,then回来的来处理服务器返回的数据(响应头)
// then 是axios接收后台返回数据的 vue jquery
// success 是的接收后台返回数据 ajax
axios.get('http://httpbin.org/get').then(function (res){ console.log(res.data) })
A、请求拦截器
// Interceptors-拦截器 // 请求拦截器:在发送请求之前,可以借助一些函数来对请求的内容和参数做一些检测。若有问题可以直接取消清求。 // 响应拦截器:当服务器返回响应数据时,响应拦截器会在我们拿到结果前预先处理响应数据。例如对响应数据做一些格式化处理,或者当响应失败时,可以做一些失败提醒和纪录。 //npm install axios axios = require('axios') //设置请求拦截器 请求拦截器 axios.interceptors.request.use(function (config){ console.log('请求拦截器成功') config.timeout=2000;//修改请求config config.headers['sign']= 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA='; config.headers['url']='http://www.baidu.com'; // config.url = '我已经改过了_haha'; return config; },function (error){ console.log('请求拦截器失败') return Promise.reject(error); }); //发送请求 axios.get('http://httpbin.org/get').then(res=>console.log(res.data))
结果:
请求拦截器成功 { args: {}, headers: { Accept: 'application/json, text/plain, */*', 'Accept-Encoding': 'gzip, compress, deflate, br', Host: 'httpbin.org', Sign: 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA=', Url: 'http://www.baidu.com', 'User-Agent': 'axios/1.3.6', 'X-Amzn-Trace-Id': 'Root=1-6445f4f6-123280943ab95d2706825c94' },
由上面的结果 可以看出 headers中增加一条:
Sign: 'exs4CQYVFQ1Udq4WPjL7XgA1MLk4WLVHUFKISwhXUgQaI0dJTEwCBWFTXVIPAyFBUA=',
这就是在拦截器在发包之前拦截的请求后进行处理的结果。
B、响应拦截器
axios = require('axios') //设置响应拦截器 axios.interceptors.response.use(function (response){ console.log('响应拦截器成功') console.log('调解密☑数进行解密数据') //return response; // return response.data;//修改响应数据 return {'name':'lyt到处一流'};//修改响应数据 },function (error){ console.log('响应拦截器失败') return Promise.reject(error); }), // //拦截响应 axios.get('http://httpbin.org/get').then(res=>console.log(res))
结果:
响应拦截器成功 调解密☑数进行解密数据 { name: 'lyt到处一流' } Process finished with exit code 0
由上面的结果可以看出,返回的时候,把响应的结果进行了处理。
{ name: 'lyt到处一流' }
===============================================================================================================================================
/*
js发包的顺序:由下图可见:请求拦截器在发包之前
响应拦截器在发包之后
js发包----请求拦截器 -----组装参数------初始化------发包------接收响应------响应拦截-----JS渲染
axios
*/