安装

先在当前项目安装axios

cnpm i axios -S

get请求

axios.get('http://localhost:8082/getAllStudents').then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

});

上面这个例子并没有带参数过去,如果需要携带参数可以有2种写法。

方法1

直接在请求的地址里,写上?key=value

axios.get('http://localhost:8082/getStudentsByName?name=marry').then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

});

方法2

axios.get('http://localhost:8082/getStudentsByName', {

params : {

name : 'tom'

}

}).then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

});

post请求

post请求与get请求类似,不同的是,如果post请求需要携带参数过去给服务器,需要把参数转换成key=value&key=value这种形式。

axios.post('http://localhost:8082/getStudentsByName', qs.stringify({

name : 'tom'

})).then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

});

这里的qs.stringify是笔者写的一个方法而已,代码如下 :

var qs = {

stringify(json){

Object.keys(json).forEach(key => {

!json[key] && delete json[key];

});

let queryStr = Object.keys(json)

.map(key => {

return `${key}=${json[key]}`;

}).join("&");

return queryStr;

}

}

该方法会把json对象转换成key=value&key=value这种形式。

并发请求

axios提供all方法,可以等待所有请求都完成后,统一处理。如 :

function getAllStudents(){

return axios.get('http://localhost:8082/getAllStudents');

}

function getStudentsByName(){

return axios.get('http://localhost:8082/getStudentsByName?name=marry');

}

axios.all([getAllStudents(), getStudentsByName()])

.then(function(res){

console.log(res);

});

这里的res返回的是一个数组

如果我们要对数据进行过操作,则需要res[0]、res[1]这样操作,不太方便。这里可以使用axios提供的spread方法,如下 :

function getAllStudents(){

return axios.get('http://localhost:8082/getAllStudents');

}

function getStudentsByName(){

return axios.get('http://localhost:8082/getStudentsByName?name=marry');

}

axios.all([getAllStudents(), getStudentsByName()])

.then(axios.spread(function(res1,res2){

console.log(res1);

console.log(res2);

}));

打印结果:

使用实例来请求

在一个项目中,请求的地址不可能都是同一个url,总会有一两个接口是别的域名。这时候我们可以创建单独的axios实例来为这个接口做请求。如 :

let newVar = axios.create({

baseURL : 'http://localhost:8082', //请求的ip

timeout : 5000 //超时时间设置

});

newVar({

url : 'getAllStudents'

}).then(res=>{

console.log(res);

});

调用create方法来创建一个实例

全局配置

我们上面的例子,在请求一个ip的时候,都需要写全 :

下面通过axios的全局配置,来达到不需要写全。代码 :

axios.defaults.baseURL = 'http://localhost:8082'; //设置请求的ip

axios.defaults.timeout = 5000; //设置请求超时时间

axios.get('/getAllStudents').then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

});

axios的全局配置还不止这2个,更多全局配置请查看官方文档。

拦截器

axios提供的拦截器有2个,一个是请求之前,一个是请求之后。例子 :

比如我们上面的post请求,我们需要用qs.stringify来转换数据,一个项目大大小小可能会有上百个请求,哪天axios更新了,可以使用json来传递数据给服务器,这时我们需要修改的话就太浪费时间了。

所以我们可以在请求之前,判断这个请求是不是post请求,如果是,则把他的json数据转换成key=value的这种形式。这个判断可以写在axios的拦截器的请求之前。如下 :

//添加请求拦截器

axios.interceptors.request.use(function (config) {

//判断请求是不是post请求

if(config.method === 'post'){

config.data = qs.stringify(config.data);

}

return config;

}, function (error) {

return Promise.reject(error);

});

//添加响应拦截器

axios.interceptors.response.use(function (response) {

console.log(response);

return response;

}, function (error) {

return Promise.reject(error);

});

axios.post('http://localhost:8082/getStudentsByName2', { //这里直接传入json即可

name : 'tom'

}).then(res=>{

console.log(res);

}).catch(err=>{

console.log(err);

})

其中,axios.interceptors.request.use里面的config,打印出来是这么一个内容 :

而axios.interceptors.response.use的response是这么一个内容 :

实际上就是和我们接受到服务器返回来的数据是同一个东西。所以拦截器的作用实际上就是请求前,我们可以提前对数据进行一些操作,请求后我们也可以对返回的数据进行统一的判断。例如状态码,你一定这么写过 :

if(res.status == 1004){

alert('服务器繁忙,请喝杯茶休息一会儿');

}else if(res.status == 1005){

alert('网络错误');

}

//都没错了,在进行下面的代码处理

如果每个请求都需要重新写一遍,那不累死。所以这个判断可以放在axios.interceptors.response.use去判断。

如 :

axios.interceptors.response.use(function (response) {

if(response.status == 1004){

alert('服务器繁忙,请喝杯茶休息一会儿');

break;

}else if(response.status == 1005){

alert('网络错误');

break;

}

return response;

}, function (error) {

return Promise.reject(error);

});

本文地址:https://blog.csdn.net/QQ408896436/article/details/107320182

希望与广大网友互动??

点此进行留言吧!

axios获取发起请求的地址 vue_axios安装,发送地址请求实例相关推荐

  1. curl发送post请求带Json参数、发送get请求

    文章目录 curl发送post请求带Json参数 curl发送get请求带参数 curl 参数 curl发送post请求带Json参数 1:linux下执行curl命令发送post请求 curl -X ...

  2. php发起options请求_如何使用PHP发送OPTIONS请求 - php

    有谁知道如何使用PHP发送" OPTIONS"请求. 我找不到做到这一点的curl setopt. 我正在使用PHP 5.6.7 我已经弄清楚了GET,POST,DELETE和PU ...

  3. 原声ajax发送post请求,原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 var oStr = ''; var postData = {}; var oAjax = null; //post提交的数据 postData ...

  4. python并发发送http请求_用python异步发送http请求来提升效率

    需求 在一个我做的项目里,业务流程有一环需要调用http的接口. 这个接口本身是同步处理的,返回响应的速度会根据要处理的数据量不同而不同. 为了不拖慢主业务流程,客户要求采用异步的方式来请求,即只要得 ...

  5. php curl发送post请求失败,php 利用curl发送post请求

    利用curl发送post请求完成数据,接口的访问,这里面的参数可以修正一下,就可以写成可以支持文件上传的一个post请求,但是我这里不做仔细的写了.等以后有时间了在考虑怎么分解这个方法: /** * ...

  6. 原生html如何发送网络请求,原生JS向服务器发送GET请求

    原生JS向服务器发送GET请求 使用Jquery可以很方便的进行GET与POST请求,但是在开发由于一些特殊原因只能使用原生JS进行开发,向服务器发送请求经常会遇见的些问题,本文主要讲解如何使用原生J ...

  7. 浏览器如何发送ajax请求,浏览器关闭时,发送ajax请求

    浏览器关闭时,发送ajax请求 发布于:2018.11.12 - 13:10 当用户在浏览器关闭时,向服务器后台发送ajax请求.代码如下. 测试结果:Safari浏览器不支持,其余浏览器支持. if ...

  8. php 向服务器发放请求,PHP客户端向服务器端发送请求并向远程服务器发送服务器端请求...

    我的方案如下: >单击按钮时,客户端将向服务器端发送请求 >一旦服务器端收到请求,它将向远程服务器发送另一个请求以获得结果 >一旦响应到来,服务器端应该回应客户端的响应. 客户 $. ...

  9. php通过js发送请求数据,使用原生javascript发送ajax请求数据的步骤

    注:请求地址是自己的项目地址,请自行更改.这只是一个简单的原生XMLHttpRequst的使用,之后会发如何封装原生ajax实现jequery的ajax 第一步:创建xhr对象.const xhr = ...

最新文章

  1. PHP __autoload函数(自动载入类文件)的使用方法
  2. 计算1-100之间 所有能被3 不能被 5整除的数 的 个数,每行打印 5 个
  3. SAP Cloud Platform上Destination属性为odata_gen的具体用途
  4. iOS SQLite函数总结
  5. 在python中字符串可以使用什么来表示_Python 字符串定义
  6. Foundationd和Application Kit的类层次
  7. SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析
  8. CVPR 2021 | 大幅涨点!新型动态激活函数和轻量级网络TFNet
  9. php高德地图计算距离接口,路径长度-距离/面积计算-示例中心-JS API 示例 | 高德地图API...
  10. NGINX1.19安装手册
  11. 对应点集配准的四元数法(ICP算法中的一个关键步骤)
  12. java QQ向另一个QQ发信息(可以是好友,也可以是非好友)
  13. 微信小程序:搜索关键词,显示地图列表
  14. 机动车驾驶证考场叫号和车牌识别
  15. 现有列表记录商品名称和价格如下:‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬要求用户输入总资产,例如: 20000,输出所有商品序号和商品列表,每行
  16. 计算机没有机械硬盘了,到底有没有必要给笔记本加机械硬盘
  17. 添加打印机时提示:未安装打印机驱动,试图将打印机添加到存储区时遇到问题
  18. run和start区别
  19. 奥运五环-web前端
  20. 算法图解第一章算法简介之二分查找C++代码实现

热门文章

  1. G1重要算法与总体流程
  2. java 内存溢出时打印_如何在JVM内存溢出的时候自动dump内存快照
  3. Python日常(13):字符串的格式化输出(format方法和%输出)
  4. 数商云:打通产销对接,构建新型数字化农副产品供应链
  5. 分享一个美业微前端的落地方案
  6. torch max()函数
  7. 【陈工笔记】# WPS中如何公式居中,公式的编号靠右?#
  8. NYOJ 998 解题报告
  9. Android RIL
  10. sql 2008 数据库每天增量备份,每周完整备份