axios---基本运用

摘要:
有两种表达方法。代码如下follows://The第一种方法是axios。然后//第二种方法是axios。收到然后是2.post。在使用post的请求头中将有一个内容类型。此字段有两个值,一个是表单数据,通常用于表单提交;另一个是application/json,即传递json数据。代码如下:axios。然后4.并发请求同时发出多个请求,并统一处理返回值。如果在某些场景中需要依赖两个接口同时返回的数据,我们可以使用并发请求。

数据请求方式

  • get,获取数据
  • post,提交数据(表单提交以及文件上传)
  • put,更新数据 (提交所有的数据)
  • patch,提交数据 (提交修改的数据)
  • delete,删除数据

1.get方法的使用

params会出现在请求头中的querry string parameters中,并且会出现在浏览器的地址栏中,即会拼接到url有两种表达方式,代码如下:

// 第一种写法
axios({
    method: 'get',
    url: '',
    params: {}
}).then(res => { do something })

// 第二种写法
axios.get(url, params).then(res => { do something })

2. post方法的使用(put和patch用法类似)

post的请求头中会有一个content-type,该字段有两个值,一个为form-data,一般用于表单提交(文件上传,图片上传等等);另一个是application/json即,传递的是json数据。如果需要传递的是form-data,那么我们需要先实例化一个FormData,然后将data指向form-data即可。有两种表达方式,代码如下:
// 第一种
axios({
    method: 'post',
    url: '',
    data: {}
}).then(res => { do something })

// 第二种
axios.post(url, data).then(res => { do something })

3. delete的使用方法

需要注意的是,config的第三个字段可以为params,这样参数会拼接在url中,如果我们不想使之出现在url中,我们只需要将params替换为data。代码如下:
axios({
    method: 'delete',
    url: '',
    params: {}
}).then(res => { do something })

4. 并发请求

同时进行多个请求,并统一处理返回值,如果在某些场景中我们需要同时依赖两个接口返回的数据,那么我们可以使用并发请求。主要用于我们需要同时处理多个接口的返回值的使用场景。代码如下:

axios.all([  // 这里的参数是一个数组,里面包含了axios请求
  axios.get('url1'), // 请求的先后顺序就是代码中的顺序
  axios.get('url2')
]).then(
  axios.spread((res1, res2) => { // spread用来分割返回值
    console.log(res1, res2)
  }
)
axios方法深入

1. 创建axios实例

有时我们后端的接口有很多,并且超时时长不一致,或者我们需要向不同的服务端去请求数据,这样我们就需要不同的axios实例去请求。代码如下:

// axios实例化
let api = axios.create({
    baseURL: 'localhost:8080', // 请求的域名
    timeout: 1000, // 设置请求的超时时长,超过时长报401超时
    method: 'get,post',
    headers: {  // 设置请求头
        token: ''  
    }, 
    params: {},
    data: {}
})
// 使用axios实例
api.get('/data.json')

2. axios配置

  • 全局配置,例如axios.defaults.timeout = 1000
  • 实例配置, 在创建axios实例时传入的配置,如果不传实例配置就会使用全局配置
  • 请求配置,在使用axios请求时,可以单独传入新的配置

这三种配置的优先级为:请求配置 > 实例配置 > 全局配置

3. axios拦截器

请求拦截器:

axios.interceptors.request.use(
  config => {}, // 在发送请求前的一些处理逻辑
  err => {} // 在请求错误后的处理
)

响应拦截器:

axios.interceptors.response.use(
  res => { return res }, // 请求成功后对响应数据做一定的处理
  err => { return Promis.reject(err)} // 在响应错误后的处理,可以用catch捕捉
)

4. axios错误处理

一般来说,如果我们在调用接口时请求错误或者响应错误,程序处理流程都会进入到catch代码块中,例如:

axios.get('/data.json').then(callback).catch(err => {
    console.log(err)
})

但是在实际开发中,我们对大多数接口都采用统一的错误处理,除了某些特殊的接口会采用catch方法。

5. axios取消Http请求

取消请求一般发生在用户想查询某一商品或者某些信息,如果等待时间过长,用户可能会选择取消查询转而查询另一商品,这个时候上一个http请求就无用了,这时候我们会去取消上一个请求,具体方法如下:

let api = axios.create({})  // 实例化axios
let source = axios.CancelToken.source() // 实例化一个source对象

api.get('/data.json', { 
    cancelToken: source.token // 请求时携带cancleToken
}).then(callback).catch(err => {
    console.log(err)
})

source.cancel('message') // 调用source的cancel方法取消http请求,并将message以error
的形式返回,然后就取消了http请求,并进入到该请求的catch代码块,进行错误处理。

免责声明:文章转载自《axios---基本运用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue中使用Sass全局变量WPF自定义控件与样式(10)-进度控件ProcessBar自定义样下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python学习第118天(Django回头看:MVCMTV、Django初步、static、url命名、分区)

今天开始重新复习,内容看的也更连贯一些,下面开始内容复述,先说一下MTV和MVC的问题 MVC(modles views controller)即web应用模型,可以指代各种各样的模型 modles即为模型 views 视图,特指用户看到的html文件 controller控制器 MTV(modles template views)即为Django模型,...

[爬虫]采用Go语言爬取天猫商品页面

最近工作中有一个需求,需要爬取天猫商品的信息,整个需求的过程如下: 修改后端广告交易平台的代码,从阿里上传的素材中解析url,该url格式如下: https://handycam.alicdn.com/slideshow/26/7ef5aed1e3c39843e8feac816a436ecf.mp4?content=%7B%22items%22%3A%5B...

iOS 第三方登录之 QQ登录

  一. 首先需要下载腾讯qq登录所需的库,下载地址是http://open.qq.com/ 。 需要用到的有TencentOpenAPI.framework 和TencentOpenApi_IOS_Bundle.bundle,将两者加入工程。 二.下面就来实现QQ第三方登录 1.声明属性,且viewcontroller实现TencentSessionD...

Axja(2) post()和get()方法

  load()方法是局部方法,因为他需要一个包含元素的jQuery 对象作为前缀。而$.get()和$.post()是全局方法,无须指定某个元素。对于用途而言,.load()适合做静态文件的异步获取,而对于需要传递参数到服务器页面的,$.get()和$.post()更加合适。 jQuery.post(url, [data], [callback], [t...

Python接口自动化-接口基础(二)

一、HTTP请求方式 1.常见请求方式 方法 描述 GET 请求指定的页面信息,并返回实体主体 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改 PUT 从...

js调用本地office打开服务器的office文件预览

本来是想做成直接在网页上在线预览office文件的,但是找了好多,要不是收费,要不就是要调用别人的API不安全,所以纠结了好久还是用调用本地的office预览office文件。 废话不多说,那么怎么调用的呢,这个是代码: <script type="text/javascript"> //获取路径...