Axios的get请求的学习
- axios是基于promise用于浏览器和nodejs的HTTP客户端,可以用在浏览器和 node.js 中。 它本身有以下特征:
- 从浏览器中创建 XMLHttpRequests
- 从 node.js 创建 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求数据和响应数据
- 取消请求
- 自动转换 JSON 数据
- 客户端支持防御 XSRF 实际上,axios可以用在浏览器和 node.js 中是因为,它会自动判断当前环境是什么,如果是浏览器,就会基于XMLHttpRequests实现axios。如果是node.js环境,就会基于node内置核心模块http实现axios
- 在HelloWorld中的template中添加内容
<template>
<div class="hello">
<h3> I am the axios,用来发棕请求,拦截响应。</h3>
</div>
</template>
步骤:
- 1.安装:npm install axios
- 2.引入加载:import axios from 'axios'
- 3.将axios全局挂载到vue原型上:vue.prototype.$ttp = axios
- 4.如何发送请求
- 发送请求的模板
得到一个API的地址,
- 发送请求的模板
- 成功就是.then;
- 失败就是.catch
- 加入一个按钮
<button @click="getData">发送请求</button>
如果点击按钮,成功的话,后台console.log(res)就会出现API 的内容,如果console.log(res.data.data),就会出现更详细的的特定的内容
- 5.把API中的标题显示在页面上
<template>
<ul>
<li v-for="item in items">
{{item.title}}
</li>
</ul>
</template>
-----------传统的function方式
methods:{
getData(){
var self = this;
this.$http.get('https://cnodejs.org/api/v1/topics')
.then(function(res){
self.items = res.data.data
console.log(res.data.data)
})
}}
-----------用ES6的方法
methods:{
getData(){
this.$http.get('https://cnodejs.org/api/v1/topics')
.thenres=>{
this.items = res.data.data;
console.log(res.data.data)
})
}}
- 6.如果要加参数。例如显示多少页,每页多少内容,直接在
this.$http.get('https://cnodejs.org/api/v1/topics',{
params:{
page:1,
limit:10}})
-------------方法2
this.$http.get('https://cnodejs.org/api/v1/topics?page=1&limit=10')
这两种传递参数数据的方法一样
Axios的post的请求用法
< template>
<div class="hello">
<h3>我是axiosAPP,用来发送请求,拦截响应</h3>
<button @click=“getData”>发送请求</button>//添加一个按钮,绑定那个方法
<ul>//把API中的title渲染到页面里面去,在data中定义一个items
<li v-for= “item in items”>
{{item.title}}
</li>
</ul>
</div>
</template>
--------------
<script>
Vue.prototype.$http = axios;//全局挂载原型上
import axios from 'axios'//引入axios
import vue from 'vue'
export default{
name:'HelloWorld',
data(){
return{
items:[]
}
},
methods:{ //如何发送请求
getData(){
<!-- var self = this;
this.$http.get('https://cnodejs.org/api/v1/topics')//获取这个API
.then(function(res){ //如果成功,打印response
console.log(res.data.data)}
)-->
用es6的语法就简单:
this.$http.get('https://cnodejs.org/api/v1/topics',{//若有参数就按照斜体字这样写
*params:{
page:1,
limit:10
})*
.then(res=>{
this.items = res.data.data;
console.log(res.data.data)}
})
.catch(function(err){ //如果失败,打印err
console.log(err)})
}
}
</script>
基本写法:const success = options.success const fail = options.fail 析构赋值:const{success,fail} = options//
AJAX的学习
- 本质:用JS发请求和收响应。
- 背景:AJAX是浏览器的功能
- 浏览器可以发请求,例如输入一个百度的网站;
- 收响应,就是向大家展示了一个百度的页面;
- 服务器:浏览器发请求到服务器(server.js)上:
- 复制nodejs-test里面的server.js里面的代码;
- 创建一个目录AJAX1,用vscode打开,新建一个server.js,将复制的代码,粘贴进去;
- 新建打开一个终端,输入node server.js
- 安装node-dev,可以自动更新代码重启: 在终端里面输入 yarn global add node-dev node-dev server.js 8888
AJAX的创建,加载css
Promise的学习
- 异步模式,是指后一个任务不等前一个任务执行完就执行,每个任务有一个或多个回调函数。
- Promise是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。
- 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
- Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
- 使用Promise对象可以用同步操作的流程写法来表达异步操作,避免了层层嵌套的异步回调,代码也更加清晰易懂,方便维护,也可以捕捉异常。
function fn(num) {
return new Promise(function(resolve, reject) {
if (typeof num == 'number') {
resolve();
} else {
reject();
}
})
.then(function() {
console.log('第1个then:参数是一个number值');
})
.then(null, function() {
console.log('第2个then');
})
}
fn('haha');
fn(1234);// 第1个then:参数是一个number值、第2个then