第4章 接口调用方式

  • 接口调用方式
  • 原生ajax
  • 基于jQuery的ajax
  • fetch
  • axios

promise

  • 主要解决异步深层嵌套的问题
  • promise 提供了简洁的API 使得异步操作更加容易

通过调接口的方式向promethues推送数据_ios

基于Promise发送Ajax请求

通过调接口的方式向promethues推送数据_数据_02

Promise 基本API

实例方法

  • .then()
    得到异步任务正确的结果
  • .catch()
    获取异常信息
  • .finally()
    成功与否都会执行(不是正式标准)

静态方法

  • .all()
    Promise.all 方法接受一个数组作参数,数组中的对象(p1、p2、p3)均为promise实例(如果不是一个
    promise,该项会被用 Promise.resolve 转换为一个promise)。它的状态由这三个promise实例决定
  • .race()
    Promise.race 方法同样接受一个数组作参数。当p1, p2, p3中有一个实例的状态发生改变(变为 fulfilled 或 rejected ),p的状态就跟着改变。并把第一个改变状态的promise的返回值,传给p的回调函数

fetch

  • Fetch API是新的ajax解决方案 Fetch会返回Promise
  • fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。
  • fetch(url, options).then()

fetch API 中的 HTTP 请求

  • fetch(url, options).then()
  • HTTP协议,它给我们提供了很多的方法,如POST,GET,DELETE,UPDATE,PATCH和PUT
    默认的是 GET 请求
    需要在 options 对象中 指定对应的 method method:请求使用的方法
    post 和 普通 请求的时候 需要在options 中 设置 请求头 headers 和 body


fetchAPI 中 响应格式

用fetch来获取数据,如果响应正常返回,我们首先看到的是一个response对象,其中包括返回的一堆原始字

节,这些字节需要在收到后,需要我们通过调用方法将其转换为相应格式的数据,比如 JSON , BLOB 或者

TEXT 等等

通过调接口的方式向promethues推送数据_传递参数_03

重点:axios

  • 基于promise用于浏览器和node.js的http客户端
  • 支持浏览器和node.js
  • 支持promise
  • 能拦截请求和响应
  • 自动转换JSON数据
  • 能转换请求和响应数据

axios基础用法

  • get和 delete请求传递参数
    通过传统的url 以 ? 的形式传递参数
    restful 形式传递参数
    通过params 形式传递参数
  • post 和 put 请求传递参数
    通过选项传递参数
    通过 URLSearchParams 传递参数

axios 全局配置

//配置公共的请求头
 axios.defaults.baseURL = ‘https://api.example.com’;
 // 配置 超时时间
 axios.defaults.timeout = 2500;
 // 配置公共的请求头
 axios.defaults.headers.common[‘Authorization’] = AUTH_TOKEN;
 // 配置公共的 post 的 Content-Type
 axios.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded’;

axios 拦截器

  • 请求拦截器
    请求拦截器的作用是在请求发送前进行一些操作
    例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易
  • 响应拦截器
    响应拦截器的作用是在接收到响应后进行一些操作
    例如在服务器返回登录状态失效,需要重新登录的时候,跳转到登录页

通过调接口的方式向promethues推送数据_数据_04

async 和 await

  • async作为一个关键字放到函数前面
    任何一个 async 函数都会隐式返回一个 promise
  • await 关键字只能在使用 async 定义的函数中使用
    await后面可以直接跟一个 Promise实例对象
    await函数不能单独使用
  • async/await 让异步代码看起来、表现起来更像同步代码

图书列表案例

1. 基于接口案例-获取图书列表

  • 导入axios 用来发送ajax
  • 把获取到的数据渲染到页面上

2 添加图书

  • 获取用户输入的数据 发送到后台
  • 渲染最新的数据到页面上
    -

3 验证图书名称是否存在

  • 添加图书之前发送请求验证图示是否已经存在
  • 如果不存在 往后台里面添加图书名称
  • 图书存在与否只需要修改submitFlag的值即可

4. 编辑图书

  • 根据当前书的id 查询需要编辑的书籍
  • 需要根据状态位判断是添加还是编辑

5 删除图书

把需要删除的id书籍 通过参数的形式传递到后台

通过调接口的方式向promethues推送数据_传递参数_05