6.0.0-alpha.3 • Published 5 years ago

ioa-rest v6.0.0-alpha.3

Weekly downloads
-
License
ISC
Repository
-
Last release
5 years ago

ioa-rest

客户端远程操作数据库通用API组件,包含角色管理、权限控制、ORM模型、数据校验、及REST API。

借鉴于postgrest简约的url查询表达式,ioa-rest使用了更加扁平化、更简洁、更易于读写的函数链表达式替换原来臃肿的json方案。

查询示例

and多字段

http://localhost:9900/model/user?where=name.eq(Wilburn);email.eq(Janae.Kiehn95@yahoo.com);age.eq(94580)

and单字段

http://localhost:9900/model/user?where=email.eq(Janae.Kiehn95@yahoo.com)
http://localhost:9900/model/user?where=email.gte(12).lt(100)

or多字段

http://localhost:9900/model/user?where=name.eq(12)||email.scope(1,45)

or单字段

http://localhost:9900/model/user?where=email.eq(8)|scope(1,45)|max(99)

组件依赖

  • ioa-db

  • ioa-auth

逻辑运算符

  • ';' 分号,多字段分隔符,功能等同于and

  • '.' 点,单字段and条件,功能等同于and

  • '||' 双或,多字段or条件

  • '|' 单或,单字段or条件

ormv库运算符

ioa-rest支持ormv中的所有运算符

编码转换

由于url参数存在保留关键字限制,当输入参数值中包含类似于&=()的保留关键字时需要使用encodeURIComponent()进行编码转换

(:%28

):%29

示例

// 错误,赋值中包含非法的保留字()
http://localhost:9900/model/user?where=phone.eq((559)-150-5961)

// 正确,()被转换为对应的url编码
http://localhost:9900/model/user?where=phone.eq(%28559%29-150-5961)

联表查询

由于项目是基于Ormv预定义的关系模型,受Ormv模型限制,ioa-rest不支持url动态联表。

http://localhost:9900/model/user?leftJoin=shop(a,b,c);id.eq(15);mid.get(15);title.lt(15);

角色

当允许客户端通过api直接操作数据库时会涉及到很多安全问题,因此角色、权限的控制必不可少。

ioa-rest中的角色是针对数据库的操作权限分组,并非常规的按照路由进行角色权限分组概念。

角色权限配置文件

ioa-rest为每个组件扩展了rests目录,以角色名作为目录进行分组,每个配置文件名都需要有对应的数据模型。

  • method Array 操作类型,可选值:GET、POST、PUT、DELETE

  • select Array 选择字段组

    • $fieldName String 可访问的字段名
  • prevent Array 禁止使用受保护的字段

    • $fieldName String 不可访问的字段名,用于排除敏感字段
  • where Object 对应sql中的where查询强制约束字段

    • $fieldName String 约束字段,可通过path表达式从ctx中取值,如'auth.uid'可获取ctx.auth.uid的值
  • set Object 创建、更新数据时预设的强制填充字段,可通过path表达式从ctx中取值

    • $fieldName String 赋值字段,可通过path表达式从ctx中取值,如'auth.uid'可获取ctx.auth.uid的值

配置示例

{
   'method': ['GET', 'PUT', 'DELETE'],
   'prevent': ['password'],
   'where': {
      'uid': 'auth.uid',
   },
   'set': {
      'uid': 'auth.uid',
   }
}

query查询参数

支持Ormv中的所有运算符和查询语句。除此之外ioa-rest还扩展了一部分专用选项,用于简化查询语句。以下凡标注为“扩展参数”的选项均为ioa-rest私有。

通用参数

  • where 数据过滤表达式

    • . and匹配,where=name.eq(lala);name.eq(lala);

    • | or匹配,where=name.eq(lala)|.neq(dudu);

select专用参数

  • select 选择字段,select=name,title,email

  • select! 反选字段,select!=uid,password

select查询列表专用参数

  • order 限定排序条件,order=name.desc;title.desc;

  • offset 起始位置

  • page 限定当前第几页

  • limit 限制单页最大条数

  • total 是否显示总量