接口说明

作者:邢足健

邮箱:[email protected]

版本:2017-11-12

更改历史

* 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":"[email protected]"},{"name":"李四","email":"[email protected]"}]

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⑦":["值⑧"]
            }
        }
    }
 }

解释:

  1. 表名①:这个位置填写的是表名

  2. 标识②:这个位置可以随便填写(建议使用字段名的拼接)。**作用:防止json中的key(键)重复**。

  3. (equalTo || like)③:这个位置的值只有两种情况:**like,equalTo**。like指的**模糊匹配**;equalTo指的是**全等**。

  4. fieldsValuesOr④:这个位置的值是固定的:**fieldsValuesOr**。

  5. fileds⑤:这个位置的值是固定的:**fileds**。

  6. "字段名⑥": 填写的是字段名(当然是数组了)。

  7. values⑦:这个位置的值是固定的:**values**。

  8. "值⑧":填写的是要查询的**值**(当然是数组了)。

  9. +⑨:连接符“+”。连接②和③两个字符串。

举例说明:

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"]
            }
        }
    }
 }

所有的情况都列出来了。案例仅做参考,剧情纯属胡诌!

results matching ""

    No results matching ""