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

75 篇文章 2 订阅
11 篇文章 0 订阅

目录

一、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的安装

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

2、axios的引入

import axios from 'axios';

3、get

 第一种参(参数在url上)

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

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

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

4、post

axios.post('/api/axios', {
    uname: 'lisi',
    pwd: 123
}).then(ret => {
    console.log(ret.data)
})

四、拦截器

1、请求拦截器

import axios from 'axios'

const service = axios.create({
    baseURL: '基础路径',
    timeout: 15000
})

//添加请求拦截器   请求接口统一添加token
service.interceptors.request.use(
    config =>{
        // 成功的回调
    },
    error =>{
        // 失败的回调    
    }
)

export default service

2、响应拦截器

import axios from 'axios'

const service = axios.create({
    baseURL: '基础路径',
    timeout: 15000
})

// 响应拦截器
service.interceptors.response.use(
    response => {
        // 成功回调
    },
    error => {
        // 失败回调
    }
)

export default service

3、案例

/**
 * 请求封装
 */
import axios from 'axios';
import configUrl from './url.js';
import store from '../store';

const service = axios.create({
    baseURL: configUrl.baseURL,
    // withCredentials: true, // 当跨域请求时发送cookie
    timeout: 15000 // 请求超时
});

//添加请求拦截器   请求接口统一添加token
service.interceptors.request.use(
    config =>{
        config.headers.token = store.getters.token || '';  //请求添加token
        return config;
    },
    error =>{
        return Promise.reject(error);
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        //如果接口返回token,替换本地旧token
        if (response.headers.token) {
            sessionStorage.setItem("token", response.headers.token);
        }
        //自定义设置后台返回code对应的响应方式
        if (response.data.code == 203) { // 未登录或登录超时
            return Promise.reject(new Error('登录超时'));
        } else { //接口正常,返回数据
            return response;
        }
    },
    error => {
        if (error.message) {
				// this.$massage.error('服务器开小差了,请稍后再试!')   
				//错误响应
				alert('服务器开小差了,请稍后再试!')   
        }
        return Promise.reject(error);
    }
);
//暴露出封装过的服务
export default service;

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值