axios常用请求的封装(get、post等方法的封装&vue的跨域解决方案)

封装的目的在于复用。
封装的目的在于把公共部分封装。

好了,相信你能理解上面两句话

下面我就针对axios的get请求和post请求进行封装啦!我用TypeScript写的,其实我写的更像JS!

import { Injectable } from '@angular/core';
import axios from 'axios';

@Injectable({
  providedIn: 'root'
})
export class TestService {

  //公共的baseURL,一般是服务器ip和端口
  baseURL:string = "http://localhost:3000/api"

  constructor() { }

  //无参数get方法
  getDataNullParams(url:string){
    return axios({
      url:this.baseURL + url,
      method:'get'
    })
  }
  //有参数get方法
  getDataWithParams(url:string,params:any){
    return axios({
      url:this.baseURL + url,
      method:'get',
      params:params
    })
  }
  //post方法
  postData(url:string,params:any){
    return axios({
      url:this.baseURL+url,
      method:'post',
      data:params
    })
  }

}

调用的话就很简单咯,无论是post还是 get,只要传入url和参数即可。
下面是调用的示例:

 postDataEvent(){
    this.server.postData('/addUser',{
      username:'hhr',
      password:'aini',
      power:1
    }).then((res)=>{
      console.log(res);
    })
  }

补充,有时候前端跨域很烦,补充vue的跨域解决方案

1.在根目录生成vue.config.js
2.vue.config.js文件代码:

module.exports = {
    assetsDir: 'assets',   //静态资源目录(js, css, img)
    lintOnSave: false, //是否开启eslint
    devServer: {
        open: true, //是否自动弹出浏览器页面
        host: "localhost", 
        port: '8080', 
        https: false,   //是否使用https协议
        hotOnly: false, //是否开启热更新
        proxy: {
            '/api': {
                target: 'http://47.106.185.34:8182', //API服务器baseURL
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        }
    },
    publicPath: ''
}

3.发送请求的时候加上/api则匹配成功,转向配置的跨域的目的地址。例子如下:

this.server.postData('/api/addUser',{ // ==>代理后:http://47.106.185.34:8182/addUser
      username:'hhr',
      password:'aini',
      power:1
    }).then((res) => {
      console.log(res);
    }).catch( err => {
      console.log(err);
      
    })
  }

补充另外几个put、patch、delete的使用注意点:

import axios from "axios"


/**
 * 使用post、patch、put方法传递参数注意:
 * data:方法请求的参数会放到请求体body里面,后台接收的是json的格式,可传递特殊字符
 * params(同get方法):方法请求的参数会放到url字符串里面,后台接收的是字符串键值的形式,不可传递特殊字符
 */
export default {
    get(url,params){
        return axios({
            url:url,
            method:'get',
            params:params
        })
    },
    post(url,params){
        return axios({
            url:url,
            method:'post',
            params:params
        })
    },
    /**
     post(url,params){
        return axios({
            url:url,
            method:'post',
            data:params
        })
    },
     */
    put(url,params){
        return axios({
            url:url,
            method:'put',
            params:params
        })
    },
    patch(url,params){
        return axios({
            url:url,
            method:'patch',
            params:params
        })
    },
    delete(url,params){
        return axios({
            url:url,
            method:'delete',
            params:params
        })
    }
}

好了,希望本文对你有帮助,我也是理解了很多次才能写出跨域了^^

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
要在Vue项目中使用Axios封装get请求,可以按照以下步骤进行操作: 1. 首先,在main.js文件中导入Axios和Qs,可以使用以下代码: ``` import axios from 'axios' import Qs from 'qs' ``` 2. 接下来,将请求的基础URL设置为Vue的原型属性,可以使用以下代码: ``` Vue.prototype.baseUrl = 'http://weianl.com/'; ``` 3. 然后,创建一个Vue原型方法封装get请求,可以使用以下代码: ``` Vue.prototype.$get = function(api, data) { if (data === undefined) { data = {}; } var ox = axios.get(this.baseUrl + api, { params: data }); return ox; } ``` 4. 最后,在需要发送get请求的地方,可以使用以下代码: ``` this.$get('/api/getData', { id: 1 }) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 这样,你就可以在Vue项目中使用Axios封装get请求了。引用中的代码示例详细地介绍了如何在Vue封装Axios请求,可以作为参考学习。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vue&axios中get和post请求的简单封装](https://blog.csdn.net/weixin_42063951/article/details/94436821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Vue项目中如何使用Axios封装http请求详解](https://download.csdn.net/download/weixin_38712092/12933779)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乐邂逅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值