再浅浅了解一下alova吧2.0

1,994 阅读2分钟

在上一篇文章我们浅浅了解了一下alova相较于axios的优势,alova实例的创建,以及如何使用alova配置全局请求拦截器和响应拦截器,这次让我们再来浅浅了解一下alova是如何发送请求的吧!

alova请求方法实例

在alova中,每个请求都会对应一个method实例,它描述了一次请求的url,请求头,请求参数,以及响应数据处理,缓存数据处理等请求行为参数,但它不会实际发送请求的,这点与axios不同,method实例仅仅保存了请求时所需要的信息,他不会发出请求,而是通过use hook发送给请求(后面文章会讲到滴)。

创建Method实例

method实例创建和我们熟悉的老朋友axios也很相似,创建method实例需要使用我们上一篇文章所创建的alova实例,看个创建method实例的代码感受一下吧。

代码示例

1.获取todo 列表的 Method 实例

// 创建一个Get实例,描述一次Get请求的信息  
const todoListGetter = alovaInstance.Get('/todo/list', {  
    // 请求头  
    headers: {  
      'Content-Type': 'application/json;charset=UTF-8'  
    },  
    // params参数将会以?的形式拼接在url后面  
    params: {  
      userId: 1  
    }  
});

tip:alovaInstance就是我们所创建的alova实例,可以去看看上一篇文章,或移步官网看看哈。

2.提交todo的POST请求Method实例

// 创建Post实例
const createTodoPoster = alovaInstance.Post(
  '/todo/create',
  // 第二个参数是http body数据
  {
    title: 'test todo',
    time: '12:00'
  },
  // 第三个参数是请求配置相关信息
  {
    headers: {
      'Content-Type': 'application/json;charset=UTF-8'
    },
    params: {
      // ...
    }
  }
);

设置更细粒度的超时时间

全局请求的超时时间作用于所有的method实例,但很多时候我们需要根据特殊请求设置不同的超时时间,这时我们就可以设置请求级别的超时时间,他会覆盖掉全局设置的timeout参数。

代码示例: 只需要在方法实例中直接设置timeout参数即可

const todoListGetter = alovaInstance.Get('/todo/list', {  
    // 请求头  
    headers: {  
      'Content-Type': 'application/json;charset=UTF-8'  
    },  
    // params参数将会以?的形式拼接在url后面  
    params: {  
      userId: 1  
    },
    timeout: 10000
});

请求方法的类型

alova提供了GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH七种请求方法的抽象实例。它们的参数结构与axios是相似的。

  • GET: alovaInstance.Get(url[, config]);
  • POST: alovaInstance.Post(url[, data[, config]]);
  • PUT: alova.Put(url[, data[, config]]);
  • DELETE: alova.Delete(url[, data[, config]]);
  • HEAD: alova.Head(url[, config]);
  • OPTIONS: alova.Options(url[, config]);
  • PATCH: alova.Patch(url[, data[, config]]);

参数与axios也是相似的

  • url是请求路径,它将会与createAlova中的baseURL拼接成完整的 url 进行请求;
  • data为请求体数据对象;
  • config为请求配置对象,其中包含了请求头、params 参数等、请求行为参数等配置;(这里config参数就浅浅提一下,如果想查看详细的config参数说明可以移步官网噢)