axios和api的封装,请求后台接口数据管理

axios和api的封装管理(前后端分离,请求后台接口数据管理)——好用易记!

  1. axios封装
    在使用vue框架项目中,和后台交互获取数据的时候,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等等。直接推荐我们使用axios库。

安装

1.npm install axios --save;//在开发环境中安装axios库

引入
一般在项目的src根目录下新建一个api文件夹,然后在api文件夹里面新建一个http.js文件和一个api.js文件。http.js文件用来封装axios的promise请求函数,api.js用来统一管理我们的接口封装函数(例如get、post、put、delete等)。

// 在http.js中引入axios
import axios from 'axios'; // 引入axios库

封装get方法和post方法

一般ajax请求方法有get、post、put、delete等方法,但是最常用的还是其中的get和post方法。
get方法:我们通过定义一个get函数,get函数有两个参数,第一个参数表示我们要请求的url地址,第二个参数是我们要携带的请求参数。get函数返回一个promise对象,当axios其请求成功时resolve服务器返回值,请求失败时reject错误值。最后通过export抛出get函数。

export function get(url, params){    
    return new Promise((resolve, reject) =>{        
        axios.get(url, {            
            params: params        
        }).then(res => {
            resolve(res.data);
        }).catch(err =>{
            reject(err.data)        
    })    
});

post方法:原理同get基本一样,但是要注意的是,post方法必须要使用对提交从参数对象进行序列化的操作。

export function post(url, params) {
    return new Promise((resolve, reject) => {
         axios.post(url, params)
        .then(res => {
            resolve(res.data);
        })
        .catch(err =>{
            reject(err.data)
        })
    });
  1. api.js的统一管理
    首先我们在api.js中引入我们封装的get和post方法
import { get, post } from './http.js'

如果有这样一个接口,是一个post请求:http://www.jd.com/users/usersinfo

我们可以在api.js中这样封装:

export const usersInfo= p => post('users/usersinfo', p);

然后在我们的页面中可以这样调用我们的api接口:

import { usersInfo} from '@/request/api';//导入我们写好的api接口
export default {        
    name: 'usersInfo',  
    created () {
        this.onLoad();
    },
    methods: {            
        // 获取数据            
        onLoad() {
            // 调用api接口,并且提供了两个参数                
            usersInfo({                    
                type: 0,                    
                sort: 1                
            }).then(res => {
                // 成功获取接口数据的其他自定义操作             
            })            
        }        
    }
}

总结:其他的api接口也是类似的写法,需要用到什么接口就在api.js里面扩展就好。api接口管理就是把api统一集中起来,提高代码的可维护性和减少修改代码出错率。

前置知识: - Vue3.0 - Axios - 微服务 Axios是一个基于Promise的HTTP库,可以用于浏览器和Node.js。在Vue中,我们通常使用Axios来发送HTTP请求。 微服务是一种面向服务架构的软件设计风格。它把一个应用划分为一些小的、独立的、可替换的服务,每个服务运行在自己的进程中,服务之间通过轻量级通信机制互相协作。微服务架构可以提高应用的可伸缩性和可维护性。 下面是一个基于Vue3和Axios的微服务请求封装示例: 1. 安装Axios ``` npm install axios ``` 2. 创建axios实例 ```js import axios from 'axios' const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // 微服务请求的基础路径 timeout: 5000 // 超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { // 在请求发送之前做些什么 return config }, error => { // 对请求错误做些什么 console.log(error) // for debug return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { // 对响应数据做些什么 const res = response.data if (res.code !== 20000) { // 如果响应状态码不是20000,则视为错误 return Promise.reject(new Error(res.message || 'Error')) } else { return res } }, error => { // 对响应错误做些什么 console.log('err' + error) // for debug return Promise.reject(error) } ) export default service ``` 3. 封装请求方法 ```js import request from '@/utils/request' export function getUserInfo() { return request({ url: '/user/info', method: 'get' }) } export function login(data) { return request({ url: '/user/login', method: 'post', data }) } export function logout() { return request({ url: '/user/logout', method: 'post' }) } ``` 在组件中使用: ```js import { getUserInfo } from '@/api/user' export default { name: 'HelloWorld', created() { getUserInfo().then(response => { console.log(response) }) } } ``` 这样就完成了基于Vue3和Axios的微服务请求封装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shinyBoy_z7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值