VuePress网站如何使用axios请求第三方接口

2023-09-16 08:01:34

19d4a00e5e6ab07957b5e7f0328c5353.jpeg

前言

VuePress是一个纯静态网站生成器,也就是它是无后端,纯前端的,那想要在VuePress中,发送ajax请求,请求一些第三方接口,有时想要达到自己一些目的

VuePress中,使用axios请求第三方接口,需要先安装axios,然后引入,最后使用

本文包括

  • VuePress中安装和使用axios,直接使用与挂载在根实例下使用

  • 解决跨域的问题,VuePress中使用axios请求第三方接口时,会出现跨域问题

  • 使用axios请求第三方接口时,如何携带参数,完成请求

安装axios

npm install axios@0.21.1 -S

注意事项

如果使用axios报错,则尝试降低axios版本

组件内使用axios

在单文件见组件中引用axios,然后使用axios.get()axios.post()发送get请求或post请求

<template>
    <div>
        <el-button type="primary" @click="handleBtnGetJoke" :disabled="isDisabled">请求数据</el-button>
        <el-button type="danger" @click="handleBtnClearData" v-if="aDatas.length > 0?true:false">清空数据</el-button>
        <ul v-if="aDatas.length > 0?true:false">
            <li class="joke-list" v-for="item in aDatas"
                                  :key="item.hashId">{{ item.content }}
            </li>
            <div class="loading" v-if="aDatas.length > 0?true:false"> 
                <el-button size="mini"  type="primary" @click="handleBtnLoading" >加载</el-button>
            </div>
        </ul> 
    </div>
</template>

<script>
    import axios from 'axios';
    export default {
        name: 'vuepressAxios',
        data() {
            return {
               aDatas: [],
               isDisabled: false,
               page: 1,
               pagesize: 5,
            }
        },
        methods: {
            async handleBtnGetJoke() {
                this.isDisabled = true;
                const params = {
                    key: "aa1b7ad08be2a09a4e0d2d46897e2dc8",
                    page: this.page,
                    pagesize: this.pagesize,
                }
                // const response = await axios.get('/api/joke/content/text.php',{params});
                const response = await this.$axios.get('/api/joke/content/text.php',{params});
                console.log(response);
                if(response.status === 200) {
                    this.isDisabled = false;
                    this.$message.success('数据请求成功');
                    const { data } = response;
                    this.aDatas = this.aDatas.concat(data.result.data);
                }else {
                    this.$message.error('数据请求失败');
                }
               
            },

            handleBtnClearData() {
                this.aDatas = [];
            },

            handleBtnLoading() {
                this.page++;
                this.handleBtnGetJoke();
            }
        }
    }
</script>

<style lang="scss" scoped>
.joke-list {
    list-style-type: decimal;
    list-style-position: outside;
    padding: 5px 0;
    border-bottom: dashed 1px #ccc;
}

.loading {
    margin: 0 auto;
    text-align:center;
}
</style>

解决跨域问题

如果你在组件中ajax发起请求时axios.get('http://v.juhe.cn/joke/content/text.php',{params:{key:'xxx'}})

此时会报错Access to XMLHttpRequest at 'http://v.juhe.cn/joke/content/text.php?key=xxx' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

进入.vuepress/config.js,配置文件中

module.exports = {
  title: 'itclanCoder', // 博客标题
  description: 'itclanCoder,itclanCoder的技术博客,itclan', // 博客描述,利于SEO
  keywords: 'itclanCoder的技术博客, itclanCoder', // 关键字
  // ...其他省略
  devServer: {    // 添加这个devServer配置  
    proxy: {     
         '/api': {       
             target: 'http://v.juhe.cn',     // 这里填写具体的真实服务器接口地止   
             changeOrigin: true,            // 允许跨域  
             pathRewrite: {          
                '^/api': ''       
             }      
          }, 
    }  
  }
};

当在Vue组件中访问/api开头时,前端会自动的代理到target目标地止上,这样就完成了转向代理,解决了开发环境下跨域的问题的

网上有的说,在根目录下创建vue.config.jsdevServer配置配置到vue.config.js中,我试了,发现不起作用,不知道为什么,有知道的朋友可以告诉我一下,谢谢

如果想要全局进行使用axios,把它挂载到Vue根实例下,则可以全局引入,如果不这样,那在组件当中,在使用axios之前,每次都需要按需引入的

为了解决这个问题,可以,一次性注入的,将axios对象挂载在Vueprototype下的,这样,在实例组件下都是有axios对象的

全局引入axios

docs/.vuepress/enhanceApp.js中引入

import axios from 'axios'
export default ({ Vue }) => {
    Vue.prototype.$axios = axios;
}

那在组件中,使用时,只需要this.$axios.get(),或this.$axios.post(),就可以了的,无需单文件组件前每次都引入axios了的

其实,引入Jquery也是同样类似的,凡是想要挂载在Vue组件根实例下公有属性和方法,都可以这么做

前后端开发接口联调对接参数

2023-09-13

0be2d159385162b39b4e1b7b60d94d66.jpeg

填写问卷就能赚奖金

2023-09-12

524a3649832f4345a77f684f2a6b68c8.jpeg

Vue中实现全景房看图3D

2023-09-11

d15e9b279eba8496045d115d552019cb.jpeg

老太太阿姨收割机秀才被封

2023-09-10

4e37da2361b0b1926f91709d0060da79.jpeg

聊一下酱香拿铁,瑞幸与茅台强强联手

2023-09-09

87c0ad82e07d0eec1e2a77ef62d694e4.jpeg

Vue中实现3D得球自动旋转

2023-09-08

338329fd30ef000bf52f64074ab3e954.jpeg

Vue中如何实现城市3D分布图

2023-09-07

e6c17d9eb15dbc2e6556c69fe2a24793.jpeg

4d9eac9ae2775ec97bccfa7a428dd2b8.png

(能绘画,能问答)

9f3221c2f01a143ced2ce7037bc3e388.png

更多推荐

【大数据实训】基于Hadoop的2019年11月至2020年2月宁波天气数据分析(五)

博主介绍:✌全网粉丝6W+,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战✌🍅文末获取项目联系🍅基于Hadoop的2019年11月至2020年2月宁波天气数据分析2019—2020学年第二学期《分布式系统原理与技术》期

如何使用Java爬取指定链接的网页内容

在当今信息时代,互联网上的数据量庞大且不断增长。为了获取特定网页的内容,爬虫技术成为了一种非常有用的工具。本文将介绍如何使用Java编程语言来实现爬取指定链接的网页内容。首先,我们需要准备好Java开发环境。确保你已经安装了JavaDevelopmentKit(JDK)并配置好了环境变量。接下来,我们将使用Java提供

面向Java开发者的ChatGPT提示词工程(7)

在如今信息爆炸的时代,我们面临着海量的文字信息,很难抽出足够的时间去阅读所有感兴趣的内容。然而,大语言模型为我们提供了一种有效的解决方案:通过自动文本摘要,帮助我们快速获取文章的核心内容。这种技术已经被广泛应用于各种软件应用程序中。以ChatGPT为例,它提供了一个简洁的网页界面,让用户能够轻松地对文章进行摘要。这种方

关于C#.Net网页跳转的7种方法

一、目前在ASP.NET中页面传值共有这么几种方式:1.Response.Redirect("http://www.hao123.com",false);目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。跳转向新的页面,原窗口被代替。浏览器中的URL为新路径。Respons

运算符——“MySQL数据库”

各位CSDN的uu们好呀,今天,小雅兰的内容是MySQL数据库里面的操作符,下面,让我们进入操作符的世界吧!!!算术运算符比较运算符逻辑运算符位运算符运算符的优先级拓展:使用正则表达式查询算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/

您的开发团队是否面临效率陷阱?

“努力还是摸鱼?”这是一个职场老笑话了,当被问到这句话,人们往往回以礼貌一笑或单纯点头、做个鬼脸。这个笑话无伤大雅,但它总让人想起一个根深蒂固的观念:在工作时,我们必须时刻保持高效。在谷歌搜索“工作效率”,会弹出数百万结果,无论是关于自我提升的书籍,还是TED演讲,又或是提高工作效率的应用程序,比如“如何在工作中提高工

(10)(10.9) 术语表(三)

文章目录1Oilpan2OSD3PCB4PCM5PDB6PIC7PID8POI9PPM10PWM11PX4FMU/PX4IO12RTL13SiRFIII14Sketch15SVN16TelemetrySystem17Thermopile18UAV19VLOS20WAAS21Xbee22ZigBee1OilpanOilp

开学好用的电容笔有哪些推荐?平价触控笔推荐

尽管ApplePencil很贵,但是如果你有足够的预算的话,也可以考虑买一款。此外,iPad配备了一款电容笔,它不但能用于画画,也能用于记录笔记。苹果的原装电容笔,虽然功能强大,但是价格非常昂贵,而国产的平替型电容笔,无论是从手感上,还是从配置上,都能和苹果原装的Pencil相抗衡,最关键的是,价格只要一二百块钱。以下

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )

文章目录一、实用性增强-变量任意位置定义二、register关键字增强-自动进行寄存器优化一、实用性增强-变量任意位置定义C语言定义变量位置:在C语言中,函数作用域中使用到的变量,必须在作用域开始的位置定义,一旦开始编写代码逻辑后,在逻辑代码行之间,不能定义变量;新版本的C语言编译器不会报错,可以在逻辑代码之间定义变量

初识canvas

对于一个前端人员来说,canvas是必须掌握的技能之一。如果你想像画画一样在浏览器上作画,那么canvas就可以做你的画布。接下啦我们就以画画的标准来初步认识下canvas1.画布画画的第一步你得有一张画纸或者画布,canvas标签就是我们的画布。画布都是有尺寸的,如果你想要做大一点的画那就需要大一点的画布,反之也是,

shell脚本命令

Shell命令是在类Unix操作系统中使用的命令行解释器(shell)中执行的命令。Shell命令可以用于执行系统命令、操作文件、进行文本处理、管理进程等。以下是一些常见的Shell命令:1.`ls`:列出当前目录下的文件和文件夹。2.`cd`:切换当前工作目录。3.`pwd`:显示当前工作目录的路径。4.`mkdir

热文推荐