本文主要是介绍筋斗云接口编程 / 对象型接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对象型接口
为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。
[数据模型描述方式]
下面是几个数据表,每个表都应有个作为主键的id字段,是可自动增长的整数类型,即使是关联表也应定义id字段作为主键。
用户:
@User: id, uname, phone(s), pwd, name(s), createTm订单:(用Ordr而不是Order词是避免与SQL关键字冲突。)
@Ordr: id, userId, status(2), amount, dscr(l)
- status: Enum. 订单状态。CR-新创建,RE-已服务,CA-已取消.订单日志:
@OrderLog: id, orderId, tm, action(2), dscr
- action: Enum. 操作类型。CR-创建订单,PA-付款,RE-完成服务,CA-取消订单.接口调用日志:
@ApiLog: id, tm, addr, app, ac, retval&, req(t), res(t)
一个用户对应多个订单(通过userId关联),一个订单包含多个物件,以及有多个订单日志(通过orderId关联),表示如下:
User 1<->n Ordr (userId)
Ordr 1<->n OrderLog (orderId)
在设计文档DESIGN.wiki中,我们用@表名: 字段名1, 字段名2
这样的格式来定义数据模型。前面讲过,通过tool/upgrade.php工具可以把它们创建或更新到数据库中。
字段名的类型根据命名规范自动判断,比如以id结尾的字段会被自动作为整型创建,以tm结尾会被当作日期时间类型创建,其它默认是字符串,规则如下:
规则 | 类型 |
---|---|
以”Id”结尾 | Integer |
以”Price”/”Total”/”Qty”/”Amount”结尾 | Currency |
以”Tm”/”Dt”/”Time”结尾 | Datetime/Date/Time |
以”Flag”结尾 | TinyInt(1B) NOT NULL |
例如,”total”, “docTotal”, “total2”, “docTotal2”都被认为是Currency类型(字段名后面有数字的,判断类型时数字会被忽略)。
也可以用一个类型后缀表示,如 retval&
表示整型,规则如下:
后缀 | 类型 |
---|---|
& | Integer |
@ | Currency |
# | Double |
字符串可以指定长度如status(2)
,name(s)
,字串长度以如下方式描述:
标记 | 长度 |
---|---|
s | small=20 |
m | medium=50 (default) |
l | long=255 |
t | text |
为了简化接口对象到数据库表的映射,我们在数据库中创建的表名和字段名就按上述大小写相间的风格来,表名或对象名的首字母大写,表字段或对象属性的首字母小写。
某些版本的MySQL/MariaDB在Windows等系统上表和字段名称全部用大写字母,遇到这种情况,可在配置文件my.ini中加上设置:
[mysqld]
lower_case_table_names=0
然后重启MySQL即可。
这篇关于筋斗云接口编程 / 对象型接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!