首页 > 其他分享 >Vue07-Axios

Vue07-Axios

时间:2023-05-31 13:57:52浏览次数:117  
标签:Vue07 axios 请求 get res Axios config data

Axios

axios是一个网络请求相关的库。

axios: ajax i/o system

使用axios编写的网络请求代码,可以运行在浏览器端,也可以在Node环境中运行。

01. 支持的请求方式

  • axios(config)

  • axios.request(config)

  • axios.get(url[, config])

  • axios.delete(url[, config])

  • axios.head(url[, config])

  • axios.post(url[, data[, config]])

  • axios.put(url[, data[, config]])

  • axios.patch(url[, data[, config]])

使用axios.all, 可以放入多个请求的数组。

axios.all([]) 返回的结果是一个数组,使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2

02. 配置选项

  • 请求地址
    • url: '/user'
  • 请求类型
    • method: 'get'
  • 请求根路径
  • 自定义请求头
    • headers:{'x-Requested-With':'XMLHttpRequest'},
  • 携带参数
    • params:
  • request body
    • data:
  • 超时设置
    • timeout: 1000
  • 请求前数据处理
    • transformRequest:[function(data){}],
  • 请求后数据处理
    • transformResponse: [function(data){}],
  • 查询对象序列化函数
    • paramsSerializer: function(params){}

03. 示例

基本使用

import axios from 'axios'

// 1.发送request请求(默认为get请求)
axios.request({
    url: "http://123.207.32.32:8000/home/multidata",
    method: "get"
}).then(res => {
    console.log("res:", res.data)
})

// 2.发送get请求
axios.get(`http://123.207.32.32:9001/lyric?id=500665346`).then(res => {
    console.log("res:", res.data.lrc)
})

// 3.发送get请求,携带参数
axios.get("http://123.207.32.32:9001/lyric", {
    params: {
        id: 500665346
    }
}).then(res => {
    console.log("res:", res.data.lrc)
})


// 4.发送post请求,直接传入参数
axios.post("http://123.207.32.32:1888/02_param/postjson", {
    name: "coderwhy",
    password: 123456
}).then(res => {
    console.log("res", res.data)
})

// 5.发送post请求,定义data
axios.post("http://123.207.32.32:1888/02_param/postjson", {
    data: {
        name: "coderwhy",
        password: 123456
    }
}).then(res => {
    console.log("res", res.data)
})

设置BaseURL

import axios from 'axios'

// 1.baseURL
const baseURL = "http://123.207.32.32:8000"

// 给axios实例配置公共的基础配置
axios.defaults.baseURL = baseURL
axios.defaults.timeout = 10000
axios.defaults.headers = {}

// get: /home/multidata
axios.get("/home/multidata").then(res => {
    console.log("res:", res.data)
})

一次性多个请求:

import axios from 'axios'

// 2.axios发送多个请求
// Promise.all
axios.all([
    axios.get("/home/multidata"),
    axios.get("http://123.207.32.32:9001/lyric?id=500665346")
]).then(res => {
    console.log("res:", res)
})

04. axios实例

导入语句 import axios from 'axios' ,导入的是一个实例。

可以直接使用这个实例发送网络请求,一般的开发、测试使用这个实例即可。

同时,这个实例有一个create的方法,可以创建新实例。

大项目的开发中,为了便于管理,一般都会针对场景创建对应的axios实例。

import axios from 'axios'

// axios默认库提供给我们的实例对象
axios.get("http://123.207.32.32:9001/lyric?id=500665346")

// 创建其他的实例发送网络请求
const instance1 = axios.create({
    baseURL: "http://123.207.32.32:9001",
    timeout: 6000,
    headers: {}
})

instance1.get("/lyric", {
    params: {
        id: 500665346
    }
}).then(res => {
    console.log("res:", res.data)
})


const instance2 = axios.create({
    baseURL: "http://123.207.32.32:8000",
    timeout: 10000,
    headers: {}
})

05. 拦截器

import axios from 'axios'

// 对实例配置拦截器
axios.interceptors.request.use((config) => {
    console.log("请求成功的拦截")
    // 场景1.开始loading的动画

    // 场景2.对原来的配置进行一些修改
    // 2.1. 修改header
    // 2.2. 添加认证登录: token/cookie
    // 2.3. 请求参数进行某些转化

    return config
}, (err) => {
    console.log("请求失败的拦截")
    return err
})

axios.interceptors.response.use((res) => {
    console.log("响应成功的拦截")

    // 场景1.结束loading的动画

    // 场景2.对数据进行转化, 再返回数据
    return res.data
}, (err) => {
    console.log("响应失败的拦截:", err)
    return err
})

axios.get("http://123.207.32.32:9001/lyric?id=500665346").then(res => {
    console.log("res:", res)
}).catch(err => {
    console.log("err:", err)
})

06. 封装实例

对于像网络请求这种库,为了方便管理,也为了避免出现这个库一旦官方不更新、不维护,整个项目就得重新修改的情况,

我们往往会对这个库在进行封装。

import axios from 'axios'

class HYRequest {
    constructor(baseURL, timeout=10000) {
        this.instance = axios.create({
            baseURL,
            timeout
        })
    }

    request(config) {
        return new Promise((resolve, reject) => {
            this.instance.request(config).then(res => {
                resolve(res.data)
            }).catch(err => {
                reject(err)
            })
        })
    }

    get(config) {
        return this.request({ ...config, method: "get" })
    }

    post(config) {
        return this.request({ ...config, method: "post" })
    }
}

export default new HYRequest("http://123.207.32.32:9001")

标签:Vue07,axios,请求,get,res,Axios,config,data
From: https://www.cnblogs.com/zibuyu2015831/p/17445900.html

相关文章

  • Axios三层封装
    Axios三层封装在实际项目中axios都是要经过封装再使用的,企业级项目一般都是三层封装1.工具函数层对axios工具进行增强,如:设置公共的请求服务器、设置请求拦截器、设置响应拦截器…创建一个文件夹utils,用来放axios。创建文件,随便取名,这里我取request.js引入importaxiosf......
  • axios 或 @nestjs/axios 错误地应用 npm config proxy
    npmproxy$npmconfiggetproxyhttp://127.0.0.1:25378/如果你的npm设置了如上代理,那么当请求本地服务时,应该会出现代理错误(通常是502响应):import{HttpService}from'@nestjs/axios';@Injectable()exportclassForwardService{@Inject()privatereadonlyhtt......
  • 14-Filter&Listener&Ajax&Axios&JSON
    1,Filter1.1Filter概述Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。Servlet我们之前都已经学习过了,Filter和Listener我们今天都会进行学习。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。如下图所示,浏览器可以访问服务器上的所有......
  • axios设置请求体
    方式一:json请求方式二:form表单 <template><div>{{msg}}</div></template><script>exportdefault{data:()=>({msg:'',}),created(){constaxios=require('axios......
  • 记录--axios和loading不得不说的故事
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助loading的展示和取消可以说是每个前端对接口的时候都要关心的一个问题。这篇文章将要帮你解决的就是如何结合axios更加简洁的处理loading展示与取消的逻辑。首先在我们平时处理业务的时候loading一般分为三种:按钮l......
  • axios的使用
    一、定义:是一个基于Promise,可以用于浏览器和node.js的HTTP客户端二、基本用法1、发起请求:设置请求方法2、传递参数方式:(1)通过传统的url以?的形式传递参数(2)通过params形式传递参数3、接收响应值 组建:<template><div>{{msg}}</div></templa......
  • axios
    开始​ 一个基于promise可以用于浏览器和node.js的网络请求库,可以允许在浏览器和node中。在node中使用http模块,在浏览器中使用ajax,使用pnpmaddaxios进行安装基础axios实例​ 一般来说我们都通过axios实例来调用其方法。先创建一个实例配置参数,然后将这个实例导出,示例如......
  • 单文件报表:vue + element + echarts + axios
    最近做个专项,需要做结果展示,又不想再搭建个复杂工程,今天尝试了单文件的vue,基本做出来了。效果图参考文档1.自己写的v-charts文档:https://www.cnblogs.com/dannyyao/p/10728210.html2.vue官方文档:https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#declari......
  • axios封装
    当我们调取后端接口时,请求会有多种结果,诸如401(未登录)、403(登录过期)、404(请求地址错误)、500(服务器繁忙)等,以往我们只会打开控制台查看原因,我们可以对此进行优化,当请求接口失败时,可以给出弹窗提示知道失败原因。项目中用到了elementui、qs,使用前需要下载service文件代码s......
  • axios 发送 form-data 请求和 x-www-form-urlencoded请求以及相关问题
    问题notsupported{"msg":"Contenttype'multipart/form-data;boundary=--------------------------714795402464721152224475;charset=UTF-8'notsupported","code":500}这个是因为form-data请求没有被后端支持,联系后端确认请求格式;关......