在前端开发中,有时我们需要从后端接口获取数据来实现前端页面的交互和动态效果,而这一过程中,前端代码需要与后端接口进行通讯。为了方便前后端的通讯,我们可以使用 npm 包 micro2-rest。
本文将详细介绍 npm 包 micro2-rest 的使用教程,包括如何安装和引用该包,如何配置和使用它的 API,以及常见问题和解决方案等内容。最后,我们提供一些示例代码来帮助读者更好地学习和理解该包的使用方法。
安装和引用 micro2-rest
要使用 micro2-rest,首先需要在项目中安装该包。在终端中输入以下命令可以完成安装:
npm install micro2-rest --save
安装完成后,在需要使用该包的文件中,引入该包:
import { createFetch } from 'micro2-rest';
配置和使用 API
createFetch
createFetch 是创建一个与后端接口通讯的函数,该函数包含用户可以设置的配置项,例如设置请求的 method、headers、body 等。
import { createFetch } from 'micro2-rest'; const fetchApi = createFetch({ baseURL: 'https://example.com/api', headers: { 'Content-Type': 'application/json', }, });
使用该函数之后,我们就可以开始编写与后端接口通讯的代码了。
.get, .post, .put, .delete
上一节介绍的 createFetch 函数中,我们可以设置配置项如:method、headers、body 等。
method 是请求方法,包括 get、post、put、delete 四种。
以 get 方法为例:
-- -------------------- ---- ------- ---------------------- - ------- - --------- --- -------- -- -- -------------- -- - ------------------ -------------- -- - ------------------- ---
在上面的代码中,我们向后端接口发送了一个 GET 请求,并传递了一个对象参数 params,该参数包含两个属性 pageSize 和 pageNum,它们将被拼接成请求 URL 的查询参数。(即类似于: 'https://example.com/api/users?pageSize=10&pageNum=1')
get 方法的其他语法与此类似。
.createCaller
createCaller 函数可以帮助我们创建一个用于调用后端接口的函数。该函数输入与后端接口的参数,返回后端接口返回的数据或错误信息。
以 POST 方法为例:
-- -------------------- ---- ------- ----- --------- - ----------------------------- ---------- ----- ---- - - --------- -------- --------- ----------- -- --------------------------- -- - ------------------ -------------- -- - ------------------- ---
在上面的代码中,我们创建了一个名为 loginUser 的函数,该函数将 POST 请求发送到 /login 路径,并传递参数 user。请求成功后,返回后端接口返回的数据。
注意:.createCaller 使用时需要先用 .createFetch 创建一个对象。调用 createCaller 时需要提供这个对象,否则会出现未定义方法的报错。
.interceptors
在请求之前或之后添加拦截器以更改请求或响应,或添加额外的控制流。有以下种类的拦截器:
- request: 所有的请求
- response: 所有的响应
以request为例:
-- -------------------- ---- ------- ----- -------- - ------------------- ---------------------------------- -------- -- - ---------------------- -------- ------ ------- -- ------- -- - ------------------------ ------- ------ ---------------------- -- --
在上面的代码中,我们添加了一个请求拦截器,该拦截器在请求被发送前输出请求配置,如果出现错误,则拒绝请求并返回错误信息。
其他类型的拦截器和语法均类似,包含两个参数,分别为响应正常返回和出现异常时的处理函数。
常见问题和解决方案
问题 1: 使用 .post 方法发送 POST 请求时,后端接收到的数据是 undefined
这是因为在请求的 headers 中,没有设置 Content-Type 字段导致的。所以你需要手动设置 headers,如下所示:
-- -------------------- ---- ------- ----------------------- ------ - -------- - --------------- ------------------- -- -------------- -- - ------------------ -------------- -- - ------------------- ---
问题 2: 和其他的 fetch 调用方式的区别是什么?
- 开箱即用的不同模式:像 fetch 和 axios 一样的 Promise 风格代码(fetch-middleware)
- 简单轻便,更快,没有过度封装
- 可编写的所有 HTTP 动词名称
- 不同 API 终端支持
- 自定义配置
- 和标识信息处理(404,401,500等)
示例代码
以下为示例代码,旨在帮助读者更好地学习和理解 micro2-rest 的使用方法:
- 以 GET 方法获取数据
createFetch({...}).get('/data').then((result) => { console.log(result); }).catch((err) => { console.error(err); });
- 以 POST 方法提交表单数据
-- -------------------- ---- ------- ----- -------- - --- ----------- --------------------------- ----------- --------------------------- ---------- --------------------------------- --------- - -------- - --------------- ---------------------- -- ---------------- -- - -------------------- -------------- -- - ------------------- ---
- 使用拦截器
-- -------------------- ---- ------- ----- -------- - ------------------- ---------------------------------- -------- -- - ---------------------- -------- ------ ------- -- ------- -- - ------------------------ ------- ------ ---------------------- -- -- ----------------------------------- ---------- -- - ----------------------- ---------- ------ --------- -- ------- -- - ------------------------- ------- ------ ---------------------- -- -- ---------------------- -------------------- -- - -------------------- -------------- -- - ------------------- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601281e8991b448de0ff