接口说明
作者:毫末科技
邮箱:hxg@haomo-studio.com
更改历史
* 2018-02-13 邢足健 无过滤条件时,省略filters传参,修改下划线格式字段为驼峰
* 2018-03-06 邢足健 添加批量创建与批量删除接口
* 2018-03-19 管鹏波 基于filters增加或的查询
1.查询接口
* /tables 获取列表,接口名为表名的复数形式
@param pageNo 整数,如1 起始页页数
@param pageSize 整数,如10 每页显示条数
@param sortItem 格式为"id, name" 根据字段排序 (sortItem与sortOrder一一对应)
@param sortOrder 格式为"asc, desc" 排序的关 键字 (asc正序,desc倒叙)
@param filters JSON字符串, 用来过滤列表的数据, 格式为
{
'table': 表名
{
'column1': { 表中的字段
like: '%abc%', 模糊查询,包含字符”abc”
notLike: '' 模糊查询,不包含字符
between: [1, 10], 取值在[1,10]之间,包含1与10
notBetween: [1, 10], 取值小于1大于10
isNull: true, // 只能为true 判断字段是否为空
isNotNull: true, // 只能为true 判断字段是否不为空
equalTo: "abc", 相等于
notEqualTo: "abc", 不等于
greaterThan: 10, 大于
greaterThanOrEqualTo: Í10, 大于等于
lessThan: 10, 小于
lessThanOrEqualTo: 10, 小于等于
in: [], 包含[]中字段
notIn: [] 不包含[]中字段
}
}
}
@param includes JSON字符串, 用来将本表的外链字段(table_id类似的字段)指向的外链表相关联
同时返回两张表的数据, 格式为:
{
'include_table1': { //外链表 表名1 (本表所对应的主键表)
includes: ['include_table11', 'include_table12'] 与主表所对应的外键
},
'include_table2': { //外链表 表名2
includes: ['include_table21', 'include_table22'] 与主表所对应的外键
}
}
@param refers JSON字符串, 用来将其他表的外链字段指向本表关联,同时返回数据, 格式为:
{
'refer_table1': { //主键id所对应的外键表 表名1 (本表所对应的外键表)
includes: ['include_table11', 'include_table12'] //外键表的外键字段
},
'refer_table2': { //主键id所对应的外键表 表名2
includes: ['include_table21', 'include_table22'] //外键表的外键字段
}
}
@param relates JSON字符串, 用来将其他有间接关系的表(所谓间接关系, 一定是跟本表的某个字段名一致, 且指向同一张表),两张表中非主键的两个字段相等
{
'relate_table1': ['column1', 'column2'], //’关联的另一张表名’:[‘一致的字段名’]
'relate_table1': ['column3', 'column4']
}
- 表关系图
查询示例:
根据科研成果表来同时查询科任务表,并过滤科研成果中科研任务ID为 “19ab06e48e9d43e4a009874aebae9cfd” ,科研成果简介包含“4” 的信息 *在下列科研成果列表的swagger查询接口中,输入你要过滤查询的条件 page_no输入查询的当前页数,若不输入默认为1 page_size输入查询每页的条数,若不输入默认为10 sort_item输入查询要排序的字段,若不输入默认为id sort_order输入查询要排序的方式,若不输入默认为asc fillters输入你要过滤查询的条件,fillters为非必填字段,不过滤的情况下直接请求接口, 本例子根据科研任务ID与科研成果简介过滤,所以fillters输入的值为: {"research_achievement":{"techId":{"like":"19ab06e48e9d43e4a009874aebae9cfd"},"note":{"like":"%4%"}}} includes可添加相互关联的表,根据表关系图我们科研知道科研任务表为主键表,科研成果表为外键表 现在查询的条件是由科研成果表同时查出科研任务表的信息,所以用includes字段来进行表关联 includes字段添加的值为:{"tech_task":{"includes":["techId"]}} ================================================================================ 查询出的结果为: [ { "superior": { "id": "86e75c8e91a646f8af6a6ee3ba0d3b8d", "enclosure": null, "techId": "19ab06e48e9d43e4a009874aebae9cfd", "hmUserId": "9a714a95d8924bac82efb707732d8a37", "researchDate": null, "note": "科研成果4", "researchType": "v1", "researchSattus": 0, "createTime": "2017-08-21 17:40:50", "lastUpdateTime": "2017-08-21 17:40:50", "researchName": "科研成果4", "numberId": null, "achFiles": null }, "includes": { "tech_task": { "id": "19ab06e48e9d43e4a009874aebae9cfd", "hmUserId": "9a714a95d8924bac82efb707732d8a37", "tname": "456", "startDate": null, "endDate": null, "status": null, "createTime": "2017-08-29 13:29:05", "lastUpdateTime": "2017-08-29 13:29:05", "researchTeamId": "5088fb258a254b7bac6e85a86d1cf5d3", "content": null } }, "refers": {}, "relates": {} } ]
科研成果列表的swagger查询地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/getTechTasksUsingGET_2
根据科研任务表来同时查询科成果表,并过滤科研任务中任务名称为“456”的信息
*在下列科研成果列表的swagger查询接口中,输入你要过滤查询的条件
page_no输入查询的当前页数,若不输入默认为1
page_size输入查询每页的条数,若不输入默认为10
sort_item输入查询要排序的字段,若不输入默认为id
sort_order输入查询要排序的方式,若不输入默认为asc
fillters输入你要过滤查询的条件,fillters为必填字段,不过滤的情况下需要输入{},
本例子根据任务名称过滤,所以fillters输入的值为:
{"tech_task":{"tname":{"equalTo":"456"}}}
includes可添加相互关联的表,根据表关系图我们科研知道科研任务表为主键表,科研成果表为外键表
现在查询的条件是由科研任务表同时查出科研成果表的信息,所以用refers字段来进行表关联
refers字段添加的值为:{"research_achievement":{"includes":["techId"]}}
================================================================================
查询出来的结果为:
[
{
"superior": {
"id": "19ab06e48e9d43e4a009874aebae9cfd",
"hmUserId": "9a714a95d8924bac82efb707732d8a37",
"tname": "456",
"startDate": null,
"endDate": null,
"status": null,
"createTime": "2017-08-29 13:29:05",
"lastUpdateTime": "2017-08-29 13:29:05",
"researchTeamId": "5088fb258a254b7bac6e85a86d1cf5d3",
"content": null
},
"includes": {},
"refers": {
"research_achievement": [
{
"id": "86e75c8e91a646f8af6a6ee3ba0d3b8d",
"enclosure": null,
"techId": "19ab06e48e9d43e4a009874aebae9cfd",
"hmUserId": "9a714a95d8924bac82efb707732d8a37",
"researchDate": null,
"note": "科研成果4",
"researchType": "v1",
"researchSattus": 0,
"createTime": "2017-08-21 17:40:50",
"lastUpdateTime": "2017-08-21 17:40:50",
"researchName": "科研成果4",
"numberId": null,
"achFiles": null
},
{
"id": "d6bc633f994a4ba2a8230ac2b9590baf",
"enclosure": null,
"techId": "19ab06e48e9d43e4a009874aebae9cfd",
"hmUserId": "9a714a95d8924bac82efb707732d8a37",
"researchDate": null,
"note": "科研成果6",
"researchType": "v2",
"researchSattus": 0,
"createTime": "2017-08-21 17:40:51",
"lastUpdateTime": "2017-08-21 17:40:51",
"researchName": "科研成果6",
"numberId": null,
"achFiles": null
}
]
},
"relates": {}
}
]
科研任务列表的swagger查询地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/getTechTasksUsingGET_2
2.新增接口
/tables/new 创建一行table表数据
method:
POST
header:
X-Auth-Token
params:
table表中所有的column
科研任务列表的swagger新增地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/createTechTaskUsingPOST_1
3.修改接口
/tables/<id>/edit 编辑一行table表数据,传入要修改的数据的id
method:
POST
header:
X-Auth-Token
params:
table表中所有的column,均可选
科研任务列表的swagger修改地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/editTechTaskUsingPOST_2
4.删除接口
/tables/<id>/delete 删除一行table表数据,传入要删除的数据的id
method:
POST
header:
X-Auth-Token
params:
无
科研任务列表的swagger删除地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/deleteTechTaskUsingPOST
5.查询单个接口
/tables/<id>获取table表某条数据,传入查询的id
method:
GET
header:
X-Auth-Token
params:
无
科研任务列表的swagger查询某条地址:http://www.haomo-studio.com:28887/v1/swagger-ui.html#!/tech-task-controller/getTechTaskUsingGET_1
6.批量创建接口
/tables/create/batch 批量创建table的多条数据,params传创建的json数组(id,create_time,last_update_time自动生成)
method:
POST
header:
X-Auth-Token
params:
params:json数组 例:[{"name":"张三","email":"123@qq.com"},{"name":"李四","email":"456@qq.com"}]
swagger批量创建地址:http://zjk.haomo-studio.com/api/swagger-ui.html#!/cc-address-book-controller/createsCcAddressBooksUsingPOST
7.批量删除接口
/tables/delete/batch 批量删除table的多条数据,ids传创建的id数组
method:
POST
header:
X-Auth-Token
params:
ids:id数组 例:["id123","id456"]
swagger批量删除地址:http://zjk.haomo-studio.com/api/swagger-ui.html#!/cc-address-book-controller/deletesCcAddressBookUsingPOST_1
8.“或”的filters使用方式
首先,我们先明确一下我们或的 filters 的json组成:
{
"表名①":{
"标识② +⑨ (equalTo || like)③":{
"fieldsValuesOr④":{
"fields⑤":["字段名⑥"],
"values⑦":["值⑧"]
}
}
}
}
解释:
表名①:这个位置填写的是表名
标识②:这个位置可以随便填写(建议使用字段名的拼接)。**作用:防止json中的key(键)重复**。
(equalTo || like)③:这个位置的值只有两种情况:**like,equalTo**。like指的**模糊匹配**;equalTo指的是**全等**。
fieldsValuesOr④:这个位置的值是固定的:**fieldsValuesOr**。
fileds⑤:这个位置的值是固定的:**fileds**。
"字段名⑥": 填写的是字段名(当然是数组了)。
values⑦:这个位置的值是固定的:**values**。
"值⑧":填写的是要查询的**值**(当然是数组了)。
+⑨:连接符“+”。连接②和③两个字符串。
举例说明:
8.1 第一种情况
问题描述:最近老板提需求了,想查询user表中loginid字段或moblie字段中是“zhangsan”的字符串。
套模板实现如下:
{
"user":{
"loginidMobileequalTo":{
"fieldsValuesOr":{
"fields":["loginid","moblie"],
"values":["zhangsan"]
}
}
}
}
8.2 第二种情况
老板突然改需求了,说:“两个字段中包含‘zhangsan’就可以,不用非得是‘zhangsan’。”
那有什么办法改喽!把之前的实现拿过来改吧改吧!无非是全等换模糊匹配嘛,换一下就行了。loginidMobileequalTo -> loginidMobilelike 。搞定!下班。噢,好像忘了测试了。先测试一下在下班吧。
修改实现如下:
{
"user":{
"loginidMobilelike":{
"fieldsValuesOr":{
"fields":["loginid","moblie"],
"values":["zhangsan"]
}
}
}
}
8.3 第三种情况
问题描述:最近老板又提需求了,想查询user表中loginid字段中是“zhangsan”或“lisi”的所有人。
那就将最原始改改就好了,如何改呢? "fields":["loginid","moblie"] -> "fields":["loginid"] ; "values":["zhangsan"] -> "values":["zhangsan","lisi"] 。太简单了吧!
修改实现如下:
{
"user":{
"loginidMobileequalTo":{
"fieldsValuesOr":{
"fields":["loginid"],
"values":["zhangsan","lisi"]
}
}
}
}
8.4 第四种情况
拿给客户看,客户用了用感觉不太对,说:“我想搜的是,loginid字段中含有zhangsan,或者,moblie字段含有lisi,这样去查啊!”,我们只能说“之前没提这个,产品说第四次需求变更时,已经改成现在这样了”,客户说:“不行,按照我说的改,我们老板就要这样的!”,“好的,我们现在就改!”,从背包拿出电脑,也不算什么大问题,稍微修改一下就行了。
修改实现如下:
{
"user":{
"loginidMobilelike":{
"fieldsValuesOr":{
"fields":["loginid","moblie"],
"values":["zhangsan","lisi"]
}
}
}
}
所有的情况都列出来了。案例仅做参考,剧情纯属胡诌!