当前位置:   article > 正文

axios的get请求和post请求的传参方式、拦截器_axios get

axios get

目录

一、GET 和 POST 传参方式的优缺点

二、GET 和 POST 传参方式的请求过程

post请求的过程:

get请求的过程

三、axios使用

1、axios的安装

2、axios的引入

3、get

4、post

四、拦截器

1、请求拦截器

2、响应拦截器


一、GET 和 POST 传参方式的优缺点

        1.post更安全(不会作为url的一部分,不会被缓存,保存在服务器日志,以及浏览器浏览记录中)

        2.post发送的数据量更大(get有url长度限制)

        3.post能发送更多的数据类型(get只能发送ASCII字符)

        4.post比get慢

        5.Post是向服务器提交数据的一种请求,get是向服务器发索取数据的一种请求。

        5.Post是向服务器提交数据的一种请求,get是向服务器发索取数据的一种请求。

        7.post请求包含更多的请求头

        8.post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据

二、GET 和 POST 传参方式的请求过程

post请求的过程:

1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进 行第一次数据发送)
4.服务器返回100 continue响应
5.浏览器开始发送数据
6.服务器返回200 ok响应


get请求的过程

1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
4.服务器返回200 ok响应。

三、axios使用

1、axios的安装

  1. $ npm install axios // 使用npm
  2. $ bower install axios // 使用bower
  3. <script src="https://unpkg.com/axios/dist/axios.min.js"></script> // 通过cdn直接调用

2、axios的引入

import axios from 'axios';

3、get

 第一种参(参数在url上)

  1. axios.get('/adate?id=123').then(res => {
  2. console.log(res);
  3. })

第二种传参(通过param选项传递参数)

  1. axios.get('/adate?id=123',{
  2. params: {
  3. id: 1
  4. }
  5. }).then(res => {
  6. console.log(res);
  7. })

4、post

  1. axios.post('/api/axios', {
  2. uname: 'lisi',
  3. pwd: 123
  4. }).then(ret => {
  5. console.log(ret.data)
  6. })

四、拦截器

1、请求拦截器

  1. import axios from 'axios'
  2. const service = axios.create({
  3. baseURL: '基础路径',
  4. timeout: 15000
  5. })
  6. //添加请求拦截器 请求接口统一添加token
  7. service.interceptors.request.use(
  8. config =>{
  9. // 成功的回调
  10. },
  11. error =>{
  12. // 失败的回调
  13. }
  14. )
  15. export default service

2、响应拦截器

  1. import axios from 'axios'
  2. const service = axios.create({
  3. baseURL: '基础路径',
  4. timeout: 15000
  5. })
  6. // 响应拦截器
  7. service.interceptors.response.use(
  8. response => {
  9. // 成功回调
  10. },
  11. error => {
  12. // 失败回调
  13. }
  14. )
  15. export default service

3、案例

  1. /**
  2. * 请求封装
  3. */
  4. import axios from 'axios';
  5. import configUrl from './url.js';
  6. import store from '../store';
  7. const service = axios.create({
  8. baseURL: configUrl.baseURL,
  9. // withCredentials: true, // 当跨域请求时发送cookie
  10. timeout: 15000 // 请求超时
  11. });
  12. //添加请求拦截器 请求接口统一添加token
  13. service.interceptors.request.use(
  14. config =>{
  15. config.headers.token = store.getters.token || ''; //请求添加token
  16. return config;
  17. },
  18. error =>{
  19. return Promise.reject(error);
  20. }
  21. )
  22. // 响应拦截器
  23. service.interceptors.response.use(
  24. response => {
  25. //如果接口返回token,替换本地旧token
  26. if (response.headers.token) {
  27. sessionStorage.setItem("token", response.headers.token);
  28. }
  29. //自定义设置后台返回code对应的响应方式
  30. if (response.data.code == 203) { // 未登录或登录超时
  31. return Promise.reject(new Error('登录超时'));
  32. } else { //接口正常,返回数据
  33. return response;
  34. }
  35. },
  36. error => {
  37. if (error.message) {
  38. // this.$massage.error('服务器开小差了,请稍后再试!')
  39. //错误响应
  40. alert('服务器开小差了,请稍后再试!')
  41. }
  42. return Promise.reject(error);
  43. }
  44. );
  45. //暴露出封装过的服务
  46. export default service;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/426932
推荐阅读
相关标签
  

闽ICP备14008679号