这一篇,把前两天实践的“数据请求”部分总结一下。从最终的结果来看,配置非常的简单,使用非常的简单,也非常的灵活,同时也存在一个很头疼的问题,这个问题可以解决,但是解释不了(功力尚浅)。

选型

可选项:vue-resource、axios

看官方文档的时候,发现了一个数据请求的组件库,叫vue-resource(https://github.com/pagekit/vue-resource),根据说明,也做了集成,马上就要测试的时候,发现了一句话(具体地方已经忘记了),说“原来的vue-resource因为xxxxxxx,推荐使用axios”。所以呢,没等用上vue-resource,直接换成了axios。

使用axios

1. 安装

npm i axios --save

2. 添加工具类utils/api.js

import axios from 'axios'
import qs from 'qs' // axios 配置
axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; //POST传参序列化
// axios.interceptors.request.use((config) => {
// if (config.method === 'post') {
// config.data = qs.stringify(config.data);
// }
// return config;
// }, (error) => {
// // _.toast("错误的传参", 'fail');
// return Promise.reject(error);
// }); //返回状态判断
// axios.interceptors.response.use((res) => {
// if (!res.data.success) {
// // _.toast(res.data.msg);
// return Promise.reject(res);
// }
// return res;
// }, (error) => {
// // _.toast("网络异常", 'fail');
// return Promise.reject(error);
// }); export function fetch(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(response => {
resolve(response.data);
}, err => {
reject(err);
})
.catch((error) => {
reject(error)
})
})
} export default {
POST(url, params) {
return fetch(url, params = {});
}
}

3. 具体使用

比如在登录页面,点击登录以后,调取验证接口,步骤如下

1)引入api.js,比如

import api from '../utils/api';

2)调用接口函数,传递参数

api.POST('api/account/login', {username:this.username, password:this.password}).then(data=> {
  // 其他处理
});

<template>
<div id="container">
...
<div id="main">
<div id="login">
<div class="form-input">
<span>
<i class="icon input-icon"></i>
</span>
<input class="login-form-input" placeholder="请输入用户名" v-model="username"/>
</div> <div class="form-input form-input-password">
<span>
<i class="icon input-icon"></i>
</span>
<input class="login-form-input" placeholder="请输入密码" type="password" v-model="password"/>
</div>
<div id="login-button">
<Button type="primary" size="large" @click.native="onPressLogin">登 录</Button>
</div>
</div>
</div>
</div>
</template> <script>
...
import api from '../utils/api'; export default {
...
data: function () {
return {
username: null,
password: null,
remember_password: false,
}
},
methods: {
// 登录
onPressLogin: function () {
let param = {
username: this.username,
password: this.password,
}
api.POST('api/home', param).then(data=> {
// 其他处理
});
}
}
}
</script> <style>
...
</style>

最后说说跨域的问题吧

关于跨域访问,我的基础知识还不够,所以解释不了。解决方案写明白,至少能解决问题

修改/ProjectPath/config/index.js

module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
target: 'http://xx.xx.xx.xxx:xxx/api/', //设置成要调用的接口域名和端口号
changeOrigin: true,
pathRewrite: {
'^/api': '/' //这里的名称就是一个代理名称,叫什么都可以,具体通过API调用的时候,会将这个名字进行替换,
              //比如,真正的接口地址是http://1.2.3.4:8/mobile/login
              // target就配置成http://1.2.3.4:8/mobile
              // 具体调用的时候,就写成/api/login
              // 会将api替换成target,即最终调用地址http://1.2.3.4:8/mobile/login
}
}
}, // Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
} ...
}

计划里还有最后一个篇章,关于“状态管理”的,比如“根据登录状态进行判断,显示登录页或者菜单页面”,那就,预知后事如何,待我娓娓道来

Vue学习记录-接口通信(数据请求)的更多相关文章

  1. vue学习记录⑤(组件通信-父与子)

    今天我们看一下组件通信. 经过前面几篇文章,我们已经可以构建出完整的单个组件,并利用路由使其串联起来访问了. 但这明显还是不够的.一个页面不可能就是个单组件,一般是由多个组件合成的.正因为如此,组件之 ...

  2. 02 Vue之vue对象属性功能&axios数据请求实现

    1.过滤器的声明和使用 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 定义过滤器的方式有两种. 1 使用Vue.filter()进行全局定义 2 在v ...

  3. vue学习记录

    vue中常用的指令 v-model 双向数据绑定,一般用于表单元素 v-for 对数组或对象进行循环操作,使用的是v-for <!-- 普通循环 --><li v-for=" ...

  4. Vue学习记录第一篇——Vue入门基础

    前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...

  5. Vue学习记录-画页面

    webstorm 因为之前开发ReactNative的时候,选择了webstorm,这回转战Vue,自然还是用它.如果什么也不做的话,打开Vue工程,编辑区域基本上没有语法高亮.怎么办呢? 安装插件( ...

  6. 【vue】生成接口模拟数据

    目录 方案一:自定义模拟数据 Step1 创建json文件 Step2 在 vue.config.js 中配置 Step3 在组件中使用 (方式一) Step3 封装api (方式二) Step4 在 ...

  7. 【原】iOS学习39网络之数据请求

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  8. vue学习记录:vue引入,validator验证,数据信息,vuex数据共享

    最近在学习vue,关于学习过程中所遇到的问题进行记录,包含vue引入,validator验证,数据信息,vuex数据共享,传值问题记录 1.vue 引入vue vue的大致形式如下: <temp ...

  9. Vue学习记录(一)

    一.引入js文件(直接采用CDN): http://cdnjs.cloudflare.com/ajax/libs/vue/1.0.26/vue.min.js 二.简单实例: (1)HTML代码: &l ...

随机推荐

  1. PXC加入新节点避免SST时grastate.dat文件内容的修改问题

    PXC加入新节点避免SST时grastate.dat文件内容的修改问题 在主从同步完成并关闭实例后,需要修改grastate.dat中的seqno:到底应该填已经执行过最后的XID号(Executed ...

  2. cordova 从xcode7迁移到xcode8

    环境以开发流程 当前项目使用的cordova环境 cordova 6.1.1 cordova-ios 3.9.2(vs15自动装的不知道在哪能改,所以考虑升级到vs17,能够手动指定) cordova ...

  3. FAQ1: 列表索引和切片问题

    问题1. 超过列表成员个数的索引访问列表会出现IndexError错误,但是如果用切片去访问就不会报错,而是返回一个空列表.同样元组也是. >>> a=[1,2,3,4] >& ...

  4. C/C++——static修饰符

    1. static变量 static 用来说明静态变量.如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用exter ...

  5. PSQueue队列操作

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈(FILO,First In Last Out,先进后出)属于线性表一样,队 ...

  6. plsql实例精讲部分笔记

    转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...

  7. poj 1041(字典序输出欧拉回路)

    John's trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8641   Accepted: 2893   Spe ...

  8. gym101431B

    以此纪念我都快忘了的后缀自动机(捂脸) 不过这题有两种做法: 用后缀自动机,先把原串再接遍中间加入特殊连接字符再把原串反接两遍,对这个新构造出的串做后缀自动机.(或者直接建立广义后缀自动机) 下面只要 ...

  9. Linux的shell终端常用快捷键

    参考: http://www.360doc.com/content/17/0627/09/44797135_666854802.shtml https://linux.cn/article-5660- ...

  10. [实战]MVC5+EF6+MySql企业网盘实战(19)——BJUI和ztree

    写在前面 上周在博客园看到一篇通用权限系统的文章,看到他那个UI不错,这里就研究了一下,将网盘的UI修改为他的那个,感兴趣的可以参考:http://b-jui.com/ 系列文章 [EF]vs15+e ...