1. 什么是 @mojule/api-factory
@mojule/api-factory 是一个帮助前端开发者快速构建 RESTful 和 GraphQL API 的 npm 包。它可以帮助你快速定义 api 的模型,然后根据模型生成相应的 api 接口供前端使用。
2. 安装
使用 npm 安装 @mojule/api-factory:
npm install @mojule/api-factory --save
3. 怎样使用 @mojule/api-factory
3.1 初始化
在使用 @mojule/api-factory 前,需要先初始化 apiFactory。你可以在你的代码中这样使用:
import apiFactory from '@mojule/api-factory' const myApiFactory = apiFactory( options )
在这里 options 表示映射表,包含各种信息,后面会详细介绍。
3.2 映射表
我们可以使用映射表来定义模型,然后生成相应的 api 接口。映射表通常是由一个名为 schema 的数组存放。每个 schema 包含以下字段:
- name:模型名称
- kind: 模型类型,可以是 RESTful 或 GraphQL
- schema:对象数组,用来定义对象的字段
- baseRoute: 如果是 RESTful,那么需要定义 baseRoute,表示 API 的基本路由,比如:
-- -------------------- ---- ------- ----- ------- - - ------- - - ----- ------- ----- ---------- ------- - - ----- ----- ----- -------- -- - ----- ------- ----- -------- -- - ----- --------- ----- -------- - -- ---------- ------------ - - -
3.3 定义字段
在 schema 中定义了一个模型后,需要使用 schema 字段来定义对象的字段。
schema 中可以定义的字段类型有:
- string:字符串类型
- boolean:布尔类型
- number:数字类型
- date:日期类型
- array:数组类型
- object:对象类型
下面是示例代码:
-- -------------------- ---- ------- ----- ------- - - ------- - - ----- ------- ----- ---------- ------- - - ----- ----- ----- -------- -- - ----- ------- ----- -------- -- - ----- --------- ----- -------- -- - ----- ------- ----- --------- -- - ----- ------------ ----- ------ -- - ----- ----------- ----- -------- --------- - ----- -------- - -- - ----- ------------- ----- --------- ----- - ----- -------- -- ------- - ----- -------- - - -- ---------- ------------ - - -
3.4 创建实例
根据定义好的 schema,我们可以使用 apiFactory 来创建相应的实例。下面就是一个创建 item 实例的例子:
const myApiFactory = apiFactory( options ) const item = myApiFactory.create( 'item', { name: 'test', number: 123, flag: true } ) console.log(item) // 输出结果:{ id: '01C7V132G6FKT2737V8DD2F43Z', name: 'test', number: 123, flag: true, createdAt: '2021-11-11T10:30:00.000Z', subItems: [], properties: {} }
我们可以看到,item 对象包含了所有需要定义的字段,而且还自动生成了一些默认值(比如 id、createdAt)。
3.5 操作实例
现在,在已经创建了 item 实例后,我们可以使用相应的方法对其进行读、写操作。
3.5.1 读
获取 item 对象某个字段的值:
console.log(item.get('name')) // 输出结果:'test'
获取 item 对象所有字段的值:
console.log(item.toObject()) // 输出结果:{ id: '01C7V132G6FKT2737V8DD2F43Z', name: 'test', number: 123, flag: true, createdAt: '2021-11-11T10:30:00.000Z', subItems: [], properties: {} }
获取 item 对象指定的字段值,以对象的形式返回:
console.log(item.toSubset(['name', 'number'])) // 输出结果:{ name: 'test', number: 123 }
3.5.2 写
给 item 对象某个字段赋值:
item.set('name', 'new test') console.log(item.get('name')) // 输出结果:'new test'
给 item 对象多个字段赋值:
item.set({ name: 'new test', number: 456 }) console.log(item.toObject()) // 输出结果:{ id: '01C7V132G6FKT2737V8DD2F43Z', name: 'new test', number: 456, flag: true, createdAt: '2021-11-11T10:30:00.000Z', subItems: [], properties: {} }
3.6 导出 API 接口
定义好了模型和相应的数据,我们可以使用 apiFactory 导出 API 接口供前端使用。举个栗子,下面是导出 item 接口的代码:
const myApiFactory = apiFactory( options ) const item = myApiFactory.create( 'item', { name: 'test', number: 123, flag: true } ) const itemApi = myApiFactory.export( 'item' ) console.log(itemApi.getItems()) // 输出结果:[ { id: '01C7YOY7Y123456789000000', name: 'test', number: 123, flag: true, createdAt: '2021-11-11T10:30:00.000Z', subItems: [], properties: {} } ]
通过上面的代码,我们可以看到,已经成功导出了 item 接口,并可以使用 itemApi 对象来进行相关操作,比如调用 itemApi.getItems() 来获取所有 item 对象。
4. 总结
本文简要介绍了如何使用 @mojule/api-factory 来进行前端开发,包括了初始化、映射表定义、创建实例、读写实例、导出 API 接口等等。这个包非常强大,欢迎大家使用和探索。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bcc967216659e2447d6