首页 > 其他分享 >Axios封装

Axios封装

时间:2023-06-20 09:33:21浏览次数:47  
标签:axios 封装 url res instance Axios params data

vue-axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

一、流程:

  1. 拿到项目和后端接口,首先要配置全局代理;
  2. 接着全局封装axios和request.js;
  3. 过滤axios请求方式,控制路径,参数的格式,http.js;
  4. 正式封装api.js;
  5. 页面调用;

二、具体

(1)前期配置

  • 终端:【npm i axios -s】
  • main.js:【import axios from "axios"】

(2)

(3)

(4)

import axios from 'axios'
import qs from 'qs' //qs模块可以将对象转换为查询字符串
const instance = axios.create()

const myaxios = {
    // 用于发送get请求
    /**
     * 基于Axios发送get请求,返回Pormise对象
     * @param {String} url 请求资源路径
     * @param {Object} params 请求参数
     */
    get(url, params) {
        return instance({
            url,
            params,
            method: 'GET'
        })
    },
    // 用于发送post请求
    /**
     * 基于Axios发送post请求
     * @param {String} url 请求资源路径
     * @param {Object} params 请求参数 {page:1,pagesize:20}==>page=1&pagesize=20
     */
    post(url, params) {
        return instance(
            {
                url,
                data: qs.stringify(params),
                method: 'POST'
            }
        )
    }
}

export default myaxios

文件名.vue

import axios from 'axios'
import myaxios from '../http/MyAxios'

export default {
    data() {
        return {
            movies: [],//用于保存需要显示的电影列表
            keyword: '',//与关键字输入框完成双向数据绑定
        }
    },
    methods: {
               getMovies() {
            let instance = axios.create()//创建axios实例
            instance({
                url: 'https://web.codeboy.com/bmdapi/movie-infos',
                params: { page: 1, pagesize: 20 },
                methos: "GET"
            })
                .then(res => {
                    console.log(res);
                    //将服务端返回的电影列表,保存进data.movies中
                    this.movies = res.data.data.result
                })
                .catch(res => {
                    console.warn(err);
                })
        },
        //使用Myaxios发送post,请求模糊查询电影列表
        getMoviesLike() {
            //没有关键字直接返回
            if (!this.keyword) {
                return
            }
            let instance = axios.create()
            instance({
                url: 'https://web.codeboy.com/bmdapi/movie-infos/name',
                method: 'POST',
                data: 'page=1&pagesize=20&name=' + this.keyword
            })
                .then(res => {
                    console.log("模糊查询的结果", res);
                    this.movies = res.data.data.result
                })
        }
    }
}

 三、原生方式

    methods:{
        getMthods(){
            axios.get("https://api.cat-shop.penkuoer.com/api/v1/products",{
                params:{
                    page:3,
                    per:2
                },
                headers:{
 
                }
            })
            .then(res => {
                console.log('res',res);
            })
        },
        postMthods(){
            axios.post("https://api.cat-shop.penkuoer.com/api/v1/auth/login",{
                name:"lxy",
                age:18
            },{
                params:{
                    a:123,
                    b:123
                }
            })
            .then(res => {
                console.log('res',res);
            })
        },
 
    }

 

标签:axios,封装,url,res,instance,Axios,params,data
From: https://www.cnblogs.com/le-cheng/p/17485257.html

相关文章

  • vue中使用axios
    引入axios错误用法在main.js中引入,需要注意的是,因为axios是第三方库,不是vue的插件,所以下面的这种写法不支持。importaxiosfrom'axios';Vue.use(axios)正确用法结合vue-axios使用,vue-axios是将axios集成到Vue.js的小包装器,可以像插件一样进行安装,具体用法是:安装......
  • 记录--Vue3 封装 ECharts 通用组件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助按需导入的配置文件配置文件这里就不再赘述,内容都是一样的,主打一个随用随取,按需导入。import*asechartsfrom"echarts/core";//引入用到的图表import{LineChart,typeLineSeriesOption}from"echarts/......
  • python3 面向对象编程--类的封装和继承
    #python3importrefromurllibimportrequestimportosclassPosterSpider(object):def__init__(self,path='./'):self.path=path#theentryofthisprocessdefgetStart(self,url):page=self.reqPage(url)......
  • 前端WebSocket 封装
    前言实际工作中可能会遇到需要封装WebSocket的场景,以下基于ts做了WebSocket的封装,包括心跳机制和重连1、封装逻辑如下,新建ws文件://websocket封装enumConnectionState{//websocket连接状态'CONNECTING','CONNECTED','DISCONNECTED','RECONNECTING','REC......
  • Android dataBinding简单的封装
    一、简介本文是databinding使用的简单封装,主要是在基类BaseActivity和BaseFragment中二、具体步骤1.在build.gradle中开启databindingdataBinding{enabled=true}2.在BaseActivity的封装,主要是通过反射的方式获取。如下packagecom.zw.databindingdemo.java;importandroid.o......
  • uniapp封装接口
    1.创建一个config文件夹,在里面创建app.jslethttpApi=''//接口公共部分module.exports={//要传的请求头token等HTTP_REQUEST_URL:httpApi,HEADER:{Headers,Authorization:'token','i-branch':'zh'},//......
  • 使用Kotlin+Rretrofit+rxjava+设计模式+MVP封装网络请求
    0、前言:kotlin使用起来非常顺畅,尤其是结合rxjava、设计模式使用,你会发现写代码原来可以这么开心!什么?你还在使用java?赶紧去学一下kotlin吧!我相信你一定会对他爱不释手,kotlin也很容易学,花一天的时间就可以从java切换为kotlin一、正文本文主要介绍如何使用kotlin封装网络请求的工具,结......
  • Tab切换以及倒计时组件封装
    1、Tab组件功能支持默认选中tab子元素可以是文本或者图片自定义tab的数量,并自适应展示实现方式用ul>li标签遍历传入的tabs数组参数渲染判断是否传入背景,未传则显示文字绑定点击事件特点简单易用可适配性2、倒计时组件功能常用于榜单或者活动结束倒计时......
  • axios的挂载
    axios的挂载请求示例如下,每一次都要导入axios,每一个组件都相当于vue的实例。 <template> <divclass="left-container">  <h3>left</h3>  <button@click="getInfo">GET</button> </div></template>​<script>import......
  • Java面向对象编程的三大特性:封装、继承、多态。
    一、封装封装的核心在于私有化(private),大部分情况下,来封装对象的属性,很少有封装方法的。通过将对象的属性封装,提供对外的公共方法来访问属性是最常见的方式。publicstaticclassFengZhuang{//通过封装,设置私有属性privateStringname;privat......