前言
在现代 Web 开发中,前后端分离的架构已经成为一种趋势。而前端真正紧密联系着后端的是 API 接口。不同的 API 实现方式也不同。有些接口返回的数据是类似于 JSON 的格式,有些则是一些奇怪的格式。不管是哪种,前端都要花费时间去处理这些数据。
在一些大型的 Web 应用中,有时 API 返回的数据相对复杂,前端需要经过一系列的处理和转换才能使用。为此,我们需要一个工具帮助我们更好地处理数据。
contentful-resolve-response 是一个可以处理复杂 API 返回数据的包,本篇文章将介绍这个包的使用方式以及它的一些优点和注意事项。
安装
npm install contentful-resolve-response
使用
假设我们的 API 返回的数据格式如下:
-- -------------------- ---- ------- - ------- - ----- ------ ------- ---------- ------------- - -------- ------ ------- ------- ------ --- ------ ----------- - - ----- -- ------- ---- -- -------- -- - ----- -- ------- ------- ----------- -- - ----- -- ------- --- ------ -- ------- - - - - -展开代码
我们的前端需要解析这个数据,并将其转换成以下格式:
-- -------------------- ---- ------- - ----- ------ -------- ------ ------- ------- ------ --- ------ ----------- - - ----- -- ------- ---- -- -------- -- - ----- -- ------- ------- ----------- -- - ----- -- ------- --- ------ -- ------- - - -展开代码
通常来说,我们可以使用 JavaScript 的一些原生方法去解析这个数据,但是这些方法比较冗长,代码可读性较差。使用 contentful-resolve-response 则可以使代码更为简洁而且易于维护。
首先,我们需要在文件中导入 contentful-resolve-response 包:
const resolveResponse = require('contentful-resolve-response');
之后,我们可以调用 resolveResponse 方法对数据进行解析:
const parsedData = resolveResponse(data);
其中 data 表示需要转换的数据。
最后,我们可以使用返回的 parsedData 对象来进行前端渲染。
深入解析
数据类型
contentful-resolve-response 可以用于解析以下数据类型:
- Plain JSON object
- JSON:API-format object
- Contentful API-format object
尤其是 Contentful API-format object,这是 Contentful 官方提供的数据格式,包含多个嵌套的关系型数据。
处理数组
contentful-resolve-response 可以很好地处理被嵌套在数组内部的数据。
比如说,我们的 API 返回的数据是这个样子:
-- -------------------- ---- ------- - ------- - - ------- ------- ----- ---- ------------- - ------- ------- -------- - - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- - - -- - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- -- - ----- -- ------- ---- -- ------- -- - - - - - -- - ------- ------- ----- ---- ------------- - ------- -------- -------- - - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- - - - - - - - -展开代码
我们使用 contentful-resolve-response 解析数据后,得到的转换后的数据格式如下:
-- -------------------- ---- ------- - - ----- ---- ------- ------- -------- - - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- - - -- - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- -- - ----- -- ------- ---- -- ------- -- - - - - -- - ----- ---- ------- -------- -------- - - -------- ------ ----- --- ------- ------ --- ---- --- ----------- - - ----- -- ------- ---- -- ------- -- - - - - - -展开代码
处理日期
早些时候,我们使用 Date.parse 方法来解析日期,但是当时间格式不规则时就会出现问题。contentful-resolve-response 则更好地解决了这个问题。
我们的 API 返回的数据有一个时间字段:
-- -------------------- ---- ------- - ------- - ----- ------ ------- ---------- ------------- - -------- ------ ------- ------- ------ --- ------ ------------- -------------------------- - - -展开代码
我们使用 contentful-resolve-response 解析数据后,得到的转换后的数据格式如下(注意属性名的变化):
{ "id": "123", "title": "Lorem ipsum", "body": "Dolor sit amet", "createdAt": "Sat Jan 01 2022 08:00:00 GMT+0800 (中国标准时间)" }
contentful-resolve-response 使用 moment.js 来解析时间,并将其转化成 JavaScript 的 Date 对象。
处理嵌套的数据
我们的 API 返回的数据有下面这样的结构:
-- -------------------- ---- ------- - ------- - ----- ------ ------- ---------- ---------------- - --------- - ------- - ------- ------- ----- ----- - -- ----------- - ------- - - ------- ---------- ----- --- -- - ------- ---------- ----- --- - - - - -- ----------- - - ------- ------- ----- ------ ------------- - ------- ----- ---- - -- - ------- ---------- ----- ---- ------------- - ------- ---- -- -------- - -- - ------- ---------- ----- ---- ------------- - ------- ------- ----------- - - - -展开代码
使用 contentful-resolve-response 转换后的数据格式如下:
-- -------------------- ---- ------- - ----- ------ --------- - ----- ------ ------- ----- ---- -- ----------- - - ----- ---- ------- ---- -- -------- -- - ----- ---- ------- ------- ----------- - - -展开代码
可以看到,contentful-resolve-response 成功将被嵌套在 included 数组里的数据解析成了对应的属性。
总结
contentful-resolve-response 是一个非常有用的前端工具,它可以帮助我们解析日益复杂的 API 返回数据。通过本章的介绍,你应该已经了解到该包的功能及优点,如果你在前端开发中需要对复杂的 API 数据进行解析,不妨试试该包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/104506