问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue怎么实现访问第三方 api

发布网友 发布时间:2022-04-25 23:33

我来回答

2个回答

懂视网 时间:2022-05-15 02:46

这次给大家带来怎样对vue项目api接口进行管理,对vue项目api接口进行管理的注意事项有哪些,下面就是实战案例,一起来看一下。

默认vue项目中已经使用vue-cli生成,安装axios,基于element-ui开发,axiosconfig目录和api目录是同级,主要记录配置的相关。

1. 在axiosconfig目录下的axiosConfig.js

import Vue from 'vue'
import axios from 'axios'
import qs from 'qs'
import { Message, Loading } from 'element-ui'
// 响应时间
axios.defaults.timeout = 5 * 1000
// 配置cookie
// axios.defaults.withCredentials = true
// 配置请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
// 静态资源
Vue.prototype.$static = ''
// 配置接口地址
axios.defaults.baseURL = ''
var loadingInstance
// POST传参序列化(添加请求拦截器)
axios.interceptors.request.use(
 config => {
 loadingInstance = Loading.service({
 lock: true,
 text: '数据加载中,请稍后...',
 spinner: 'el-icon-loading',
 background: 'rgba(0, 0, 0, 0.7)'
 })
 if (config.method === 'post') {
 config.data = qs.stringify(config.data)
 }
 return config
 },
 err => {
 loadingInstance.close()
 Message.error('请求错误')
 return Promise.reject(err)
 }
)
// 返回状态判断(添加响应拦截器)
axios.interceptors.response.use(
 res => {
 if (res.data.code === 200) {
 loadingInstance.close()
 return res
 } else {
 loadingInstance.close()
 Message.error(res.data.msg)
 }
 },
 err => {
 loadingInstance.close()
 Message.error('请求失败,请稍后再试')
 return Promise.reject(err)
 }
)
// 发送请求
export function post (url, params) {
 return new Promise((resolve, reject) => {
 axios
 .post(url, params)
 .then(
 res => {
 resolve(res.data)
 },
 err => {
 reject(err.data)
 }
 )
 .catch(err => {
 reject(err.data)
 })
 })
}
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)
 })
 })
}

2. 在api目录下的index.js,api1.js,api2.js

api1.js
import { post } from '../axiosconfig/'
export default {
 login(params) {
 return post('/users/api/login', params)
 }
}
api2.js
import { post } from '../axiosconfig/'
export default {
 regist(params) {
 return post('/users/api/regist', params)
 }
}
index.js
import user from './api1.js'
import active from './api2.js'
export default {
 api1,
 api2
}

3. main.js 配置

import api from './api/'
Vue.prototype.$api = api

4. 在组件中使用

登录组件中
doLongin() {
 let params={}
 this.$api.api1.login(params).then(res => {
 console.log(res)
 })
}
注册组件中
doRegist() {
 let params={}
 this.$api.api2.regist(params).then(res => {
 console.log(res)
 })
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样在项目中使用JS装饰器函数

怎样操作echarts节点显示动态数据

热心网友 时间:2022-05-14 23:54

在 Vue.js 中使用第三方库的方式有:
1.全局变量
在项目中添加第三方库的最简单方式是讲其作为一个全局变量, 挂载到 window 对象上:
entry.js
window._ = require('lodash');
MyComponent.vue
export default {
created() {
console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..');
}
}
这种方式不适合于服务端渲染, 因为服务端没有 window 对象, 是 undefined, 当试图去访问属性时会报错.

2.在每个文件中引入
另一个简单的方式是在每一个需要该库的文件中导入:
MyComponent.vue
import _ from 'lodash';

export default {
created() {
console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..');
}
}
这种方式是允许的, 但是比较繁琐, 并且带来的问题是: 你必须记住在哪些文件引用了该库, 如果项目不再依赖这个库时, 得去找到每一个引用该库的文件并删除该库的引用. 如果构建工具没设置正确, 可能导致该库的多份拷贝被引用.

3.优雅的方式
在 Vuejs 项目中使用 JavaScript 库的一个优雅方式是讲其代理到 Vue 的原型对象上去. 按照这种方式, 我们引入 Moment 库:
entry.js
import moment from 'moment';
Object.defineProperty(Vue.prototype, '$moment', { value: moment });

由于所有的组件都会从 Vue 的原型对象上继承它们的方法, 因此在所有组件/实例中都可以通过 this.$moment: 的方式访问 Moment 而不需要定义全局变量或者手动的引入.
MyNewComponent.vue
export default {
created() {
console.log('The time is ' . this.$moment().format("HH:mm"));
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 vue插件为啥在浏览器中是固定? 为什么我的浏览器加载不出来vue的示例 vue可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM就是牛逼... vue-element-admin怎么直接用浏览器跑起来,而不是用nodejs 如何解决vue对浏览器的兼容问题 我的电脑下面的开始键.关机的哪里跑到旁边去了请问怎么弄回来呀! 电脑桌面的关机等一行图标都到了最上面怎么把它弄到最下边 开关机标志跑到左上角了,如何调到左下角? 我们家电脑下面那排,就是属于关机那一排到最上面怎么调回来? 电脑关机的时候,一般都在左下角,现在在右上角,咋变过来 电脑左下角关机一栏跑道左上角了怎么能弄回来 家里电脑关机键从左下角移到了右上角,怎么把它移回原处 现在惠州的个体户(年收入小于8w)的要不要办工商证? 我的电脑屏幕开关机键从左下角转到左上角了,怎么 恢复 惠州注册个体工商户用来买社保注册什么样的类型?可以使后续年报,缴费,注销,其他手续等相对比较简单 电脑关机快键左下角变换右上角怎么切换 - 信息提示 家里电脑关机键从左下角移到了右上角,怎么把它移回原处? 本人想在惠州注册一个商标,请问流程是怎样的? 我的电脑有关机这一横栏跑到上面顶头去了怎样弄回来? vue访问网上接口,接口对了,但是没有返回数据,报403? 为什么苹果7手机更新了Appstore里面没有更新一栏如下图? 苹果截图编辑怎么用 iphone X 截屏后的编辑功能怎么开启 苹果手机截屏功能怎么打开??? 激活微信时提示编辑nu74发送到106903290212367发了怎么没反应?_问... IC上写着NU74是什么型号的IC 翻译泰语 泰国在日常生活中常说哪些 盘点tvb古装经典,【免费高清】在线观看百度网盘资源 澳大利亚的签证去哪些国家可以免签? 请问各种语言的我爱你怎么说? 怎么申请 注册 无需手机号怎么注册? vivo手机为什么用屏幕录制的视频这么模糊呢? 我和别人用同样的录屏软件录同样的视频,我录的没别人清晰,怎么回事啊? 手机怎样申请 怎么申请新的? 没有手机号可以注册吗? 无需手机号怎么注册? 如何电脑注册