vue全家桶(3.1)
4.数据请求
4.1.axios是什么?
axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它有以下特征:
从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止 CSRF/XSRF
在vue全家桶中,推荐使用,说白了就是用它来发送请求,和后端交互
4.2.简单使用
1.安装axios
npm install axios --save
2.使用axios发送get请求
在组件内部导入axios,这里以Demo1.vue为例:
import axios from 'axios'
在created中发送请求
created () {
axios.get('https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list')
.then((response) => console.log(response))
}
完整代码:
<template>
<div class="page">
</div>
</template>
<script type="text/javascript">
import axios from 'axios'
export default {
data () {
return {
}
},
components: {
},
created () {
axios({
method: 'get',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list'
})
.then((response) => console.log(response))
}
}
</script>
<style scoped>
</style>
上面代码中打印出来的内容是一个对象,里面的内容结构为:
{
// `data` 由服务器提供的响应
data: {},
// `status` 来自服务器响应的 HTTP 状态码
status: 200,
// `statusText` 来自服务器响应的 HTTP 状态信息
statusText: 'OK',
// `headers` 服务器响应的头
headers: {},
// `config` 是为请求提供的配置信息
config: {}
}
知识补充:在代码中使用到的后端地址是使用一个在线mock数据生成工具伪造的,具体工具如下
easy-mock地址: https://easy-mock.com
mockjs文档: https://github.com/nuysoft/Mock/wiki
mockjs案例: http://mockjs.com/examples.html
easy-mock的简单使用教程: http://blog.nodeing.com/archives/87.html
上面例子中使用get方式请求数据,其中get方式是默认的,因此,你也可以写成这样
axios('https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list')
.then((response) => console.log(response))
3.使用axios发送post请求
接下来,你可以尝试着去发送一下post方法了,使用方法和jquery中ajax方法类似
axios({
method: 'post',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/add'
})
.then((response) => console.log(response))
4.错误处理
你需要在catch里面处理错误,例如:
axios({
method: 'post',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/add/1'
})
.then((response) => console.log(response))
.catch((err) => console.log(err))
5.传递参数方式
get请求方式传参数,配置params选项就可以了
axios({
method: 'get',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list',
params: {
title: 'xxx',
count: 30
}
})
.then((response) => console.log(response))
注意:params里面的内容作为查询字符串和url一起发送
post请求方式传参数,配置data选项
axios({
method: 'post',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/add',
data: {
title: 'html最佳入门',
count: 80
}
})
.then((response) => console.log(response))
.catch((err) => console.log(err))
注意:data的内容作为请求体发送
4.3.请求方法的别名
为方便起见,为所有支持的请求方法提供了别名
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
举个例子,原来使用axios发送get请求我们写成这样
axios({
method: 'get',
url: 'https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list',
params: {
id: 10
}
})
.then((response) => console.log(response))
使用对应的别名发送,你可以写成这样
axios.get('https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list', {
params: {
id: 10
}
})
.then((response) => console.log(response))
其他请求方式使用方法和上面例子类似
4.4.处理并发请求
有时候,你想一次执行多个请求,可以使用all方法
function http1 () {
return axios.get('https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/list')
}
function http2 () {
return axios.post('https://easy-mock.com/mock/5c23887d3671d47be5ea8d66/axiosdemo/course/update')
}
axios.all([http1(), http2()]).then((response) => {
// 这里response返回一个数组 里面装了两个请求的返回结果
console.log(response)
})
上面代码中返回结果被放入到了一个数组中,如果想分别把结果拿出来,可以使用axios.spread方法
axios.all([http1(), http2()]).then(axios.spread((res1, res2) => {
// res1 对应http1的请求结果 res2对应http2的请求结果
console.log(res1, res2)
}))
螺钉课堂视频课程地址:http://edu.nodeing.com
vue全家桶(3.1)的更多相关文章
- 用 Vue 全家桶二次开发 V2EX 社区
一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...
- Vue全家桶
简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...
- 从零开始系列之vue全家桶(3)安装使用vuex
什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...
- 使用vue全家桶制作博客网站
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...
- 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程
使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...
- Vue全家桶介绍
一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...
- 一个简单的假vue全家桶(vue+vue-router+require)
首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...
- Vue 全家桶 + Electron 开发的一个跨三端的应用
代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...
- Vue全家桶了解一下(待补充)
vue全家桶了解一下 一.vue+vue-router+vuex+axios1.vue:使用vue-cli,生成最基本的vue项目2.vue-router:vue项目中的路由管理插件3.vuex:vu ...
- 升级vue全家桶过程记录
背景 如果你使用了element-ui的el-tabs组件,并且想要单独升级element-ui至2.10.0,你会发现,使用了el-tabs组件的页面只要打开就卡死.原因是element-ui~2. ...
随机推荐
- Java实现 蓝桥杯 算法训练 二进制数数
试题 算法训练 二进制数数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定L,R.统计[L,R]区间内的所有数在二进制下包含的"1"的个数之和. 如5的二进 ...
- Java实现寻找最小的k个数
1 问题描述 有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低. 2 解决方案 2.1 全部排序法 先对这n个整数进行快速排序,在依次输出前k个数. package com.liuzhen. ...
- java实现取球博弈
今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1 ...
- Java实现提取拼音首字母
在很多软件中,输入拼音的首写字母就可以快速定位到某个词条.比如,在铁路售票软件中,输入: "bj"就可以定位到"北京".怎样在自己的软件中实现这个功能呢?问题的 ...
- java实现基因牛的繁殖
基因牛的繁殖 基因牛 张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛, 生出来的母牛三年后,又可以每年生出一头母牛.如此循环下去,请问张教授n年后有多少头母牛? 以下程序 ...
- java实现第七届蓝桥杯生日蜡烛
生日蜡烛 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始过 ...
- 7.keras-模型保存和载入
keras-模型保存和载入 1.数据的载入与预处理 import numpy as np from keras.datasets import mnist from keras.utils impor ...
- 关于thinkhphp3.1中废弃 preg_replace /e 修饰符
警告:preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead 网上查了下 发现 php5.5版 ...
- 如何修改npm仓库地址
解决方案 npm config set registry http://registry.npm.taobao.org/ 将npm默认设置为淘宝镜像地址 发布包 当你想发布自己的包时,需要将地址修改回 ...
- 数据库连接池 Druid和C3p0
datasource.properties数据源 #数据源 datasource.peoperties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc: ...