前言: DataSerivce 务求一切操作简单化,不创造过多概念,但一些前提的概念是必须的,——请放心,只要你是个 CRUD Boy 便会觉得很简单:)
DataService 中的一个服务就是可配置的最基础单元,“命名空间 Namespace”表示其名字,也是构成 HTTP API URL 上面的一部分。不确切地说,它相对应于 SQL 中的一张表, 当然这种类比不是强耦合的,例如:
一个服务(或者说“一个命名空间”)可以有一个或多个 SQL 操作,对应一个或多个 HTTP API 地址,比如说一个服务默认有 CRUD 四个的 SQL 操作(一般都是围绕一张表操作的),对应着四个 API 入口;但也可以只有一个(自定义的 SQL)。CRUD 不够可以扩展,一个命名空间下可允许有多个子命名空间。当前最多两级的命名空间结构。
DataService 并不会负责业务实体的建模、建表等操作,但是会从现有的数据表中获取相关的信息来进行配置。 建模的方法论与传统的关系型数据库开发模式一致,前期仍是分析、设计(ER 图/UML)、建表等的流程。
数据实体(Entity)有四种基础的操作:增删改查 CRUD。在 DataService 中它们的关系如下表所示。
创建实体 Create | 查询实体 Read | 更新实体 Update | 删除实体 Delete | |
---|---|---|---|---|
HTTP 方法 | POST | GET | PUT | DELETE |
SQL 命令 | INSERT INTO | SELECT | UPDATE | DELTETE/UPDATE(逻辑删除) |
DataService 操作 | 根据提交的数据转化为 INSERT INTO 语句去操作 | 获取单笔详情 | 根据提交的数据转化为 UPDATE SQL 语句去操作 | 删除逻辑或物理删除 |
获取多行列表(不分页) | ||||
获取多行分页列表 | ||||
API 入参 | 标准表单或 JSON 数据 | Path 参数或 QueryString 参数 | 标准表单或 JSON 数据 | Path 参数或 QueryString 参数,只须 id 参数 |
API 出参 | 新建实体的 id | 单笔详情 {} 对象 列表 [] 数组 |
是否成功 | 是否成功 |
DataService 各项功能围绕 CRUD 展开,上述的“SQL 命令”与“DataService 操作”两部分,不仅提供默认通用的 CRUD 操作,而且如果不满足的话,还可以自定义 SQL 逻辑(下小节详述)。 不论哪种方式,均采用约定好的固定搭配请求服务,假设/common_api为数据服务的专属 API 前缀、 foo为命名空间,则有以下固定的请求操作。