apijson 初探( 二 )


示例报文请求:
{"[]":{"page":0,"count":3,"Moment":{},"User":{"id@":"/Moment/userId"},"Comment[]":{"count":3,"Comment":{"momentId@":"[]/Moment/id"}}}}响应:
{"[]":[{"Moment":{"id":235,"content":"xxx",...},"User":{...},"Comment[]":[...]},{"Moment":{"id":301,"content":"xxx",...},"User":{...},...},...],"code":200,"msg":"success"}DAO/实体服务apijson 如官方所述作为一款 ORM , 其实质是将原来传统开发模式中的三层架构中的数据持久化层直接开放给前端 , 即压缩了领域层和表现层(很薄 , 仅做可选的权限校验 , 但是可以通过重写方法来自定义权限) , 几乎是让前端的视线直接穿透到数据持久化层来进行他们的对接开发工作 。
前端开发需要建立一种新习惯 - 主动进行数据查询和拼接 , 而非像以前那般 , 等待后端拼接好再给出来 。当然 , 也可以延续传统的开发习惯 , 由后端人员整理接口格式和生成文档 , 再有前端去调用 , 可以无缝衔接;不同的是 , 后端开发人员并没有“开发”的过程 , 只有写文档的过程 。
具体如何实践 , 可以按团队实际情况来做选择 。
apiQL 中目前支持的 Query 语句

  1. 查询数组
  2. 匹配选项范围
  3. 匹配条件范围
  4. 包含选项范围
  5. 判断是否存在
  6. 远程调用函数
  7. 存储过程
  8. 引用赋值
  9. 子查询
  10. 模糊搜索
  11. 正则匹配
  12. 连续范围
  13. 新建别名
  14. 增加 或 扩展
  15. 减少 或 去除
  16. 比较运算
  17. 逻辑运算
  18. 数组关键词
  19. 对象关键词
  20. 全局关键词
DAO 方法借鉴 Restful Api 中的 verbs 术语 , 实际请求时全用HTTP POST请求 。
  1. GET: 普通获取数据
  2. HEAD: 普通获取数量
  3. GETS: 安全/私密获取数据 , 用于获取钱包等对安全性要求高的数据
  4. HEADS: 安全/私密获取数量 , 用于获取银行卡数量等对安全性要求高的数据总数
  5. POST: 新增数据
  6. PUT: 修改数据 , 只修改所传的字段
  7. DELETE: 删除数据
实际使用时 , 最好在前端封装一套对应的 QueryBuilder , 得到更 OO-Style 的体验 , 而不是记忆一堆“方言”词汇 ,  如 apijson-builder 。
3、Who/When/Where适用场景非金融类场景;中小型前后端分离的项目 , 尤其是 初创项目、内部项目、低代码/零代码、小程序、BaaS、Serverless 等 。
简易DemoAPIJSON-ToDo-Demo 一个简单的 todo 示例项目 , 精简数据 , 简化上手流程 , 带自定义鉴权逻辑
管理类系统apijson-examples APIJSON 的前端、业务后端、管理后端 Demo
4、How按需依赖
  1. apijson-orm APIJSON ORM 库 , 可通过 Maven, Gradle 等远程依赖
  2. apijson-framework APIJSON 服务端框架 , 通过数据库表配置角色权限、参数校验等 , 简化使用
  3. apijson-router APIJSON 的路由插件 , 可控地对公网暴露类 RESTful 简单接口 , 内部转成 APIJSON 格式请求来执行 。
  4. apijson-column APIJSON 的字段插件 , 支持 字段名映射 和 !key 反选字段
Quick StartTODO
Best Practices文档
  1. APIJSON 官方文档  , 提供排版清晰、搜索方便的文档内容展示 , 包括设计规范、图文教程等
  2. APIJSON 英文文档  , 提供排版清晰的文档内容展示 , 包括详细介绍、设计规范、使用方式等
视频教程APIJSON 后端教程(1):简介https://www.bilibili.com/video/BV1vL411W7yd

经验总结扩展阅读