1. 多条件查询{entity}对象类数据

多条件查询{entity}

请求方式:POST

请求地址:/bosfoundationservice/{appKey}/prototype/query/{entity}?noRelation={noRelation}

1.1. 请求参数:

Headers:

参数名 类型 示例 是否必填 参数含义
Authorization string c4570cb9ca324bc8ba7dd9d1967710ea access_token

PathParas:

参数名 类型 示例 是否必填 参数含义
entity string folders 对象类类名

SearchParas:

参数名 类型 示例 是否必填 参数含义
noRelation boolean true/false true表示不返回关联关系,false表示返回所有关联关系
page number 1 指定当前查询第几页,从1开始
per_page number 5 每页的记录数
sortby string order 指定返回结果按照哪个属性排序
order string asc 排序顺序,asc升序,desc降序

Body:

application/json:

{
    "condition": [
        {
            "field": "name", // 查询字段
            "operator": "like", // 匹配规则 精确查询,模糊查询等等
            "value": "zhao", // 值
            "number": "false", //比较时将内容转化为数字后再比较
            "logic": " " // 条件连接,若只有一条查询条件则为空。值可为Or,And。
        }
    ],
    "nestOr": [
        {
            "field": "name",
            "operator": "==",
            "value": "file1",
            "number": "false"
        },
        {
            "nestAnd": [
                {
                    "field": "name",
                    ...
                },
                {...}
            ]
        }
    ],
    "select": [
        "name" // 指定返回字段,若未指定,返回实体所有内容。 
    ]
}

1.2. 参数说明:

参数名 类型 示例 是否必填 参数含义
field string xxx 查询字段
operator string like 匹配规则 精确查询,模糊查询
value string zhao
number Boolean false 比较时将内容转化为数字后再比较
logic string Or,And 条件连接,若只有一条查询条件则为空。值可为Or,And。

1.3. 正确返回:

Http Status Code:200
{
    "code": "SUCCESS",
    "message": "请求处理成功",
    "data": {
        "count": 100,//总记录数
        "data": [
            {} //返回数据内容。]
    }
}

1.4. 状态码:

状态码 code message data 原因
200 BOSCLASS_NA 不适用于{entity}类型实例数据 NULL 当对relationship类型操作时
200 JSON_FORMAT_WRONG Json格式错误 NULL 当传入Body格式错误时
200 ENTITY_BOSCLASS_NOTFOUND 实体类{entity}不存在 NULL 当传入entity错误时
200 ENTITY_QUERY_NUMBER_SETTING_CONFLICT 不可同时设置number为true、operator为非数字运算符{operator} NULL 如condition或nestAnd/nestOr参数中number值为true
200 ENTITY_QUERY_NUMBER_CONVERT_WRONG value参数值{value }非数字 NULL 如codition或nestAnd/nestOr参数中number值为true
200 ENTITY_QUERY_NUMBER_SETTING_INVALID 如condition或nestAnd/nestOr参数中number值为true NULL value参数值{value }非数字
200 ENTITY_QUERY_PAGE_SETTING_INVALID page参数值{page}非数字 NULL 查询参数page值为数字以外的值时
200 ENTITY_QUERY_PERPAGE_SETTING_INVALID per_page参数值{per_page}非数字 NULL 查询参数per_page值为数字以外的值时
200 ENTITY_QUERY_ORDER_SETTING_INVALID order参数值{order}无效 NULL 查询参数order值为asc或desc以外的值时
200 ENTITY_QUERY_GROUPING_COLLECT_REQUIRED grouping中collect属性必填 NULL 当grouping不为空时,如果grouping下的collect为空时
200 ENTITY_QUERY_KEEP_COLLECT_MUTEX grouping中keep不能包含collect字段 NULL 当grouping不为空时,keep中有collect字段时
200 ENTITY_QUERY_AGGREGATE_MUSTIN_KEEP 聚合字段必须在keep中保留 NULL 当grouping不为空时,aggregate中字段未在keep中定义时
200 ENTITY_QUERY_SELECT_ERROR select字段必须在collect、count、aggregate中定义 NULL 当grouping不为空时,select内容不是collect、count、aggregate字段或keep时
200 ENTITY_QUERY_UNKNOWN_AGGREGATE 未知的聚合函数 {xxx} NULL 当grouping不为空时,aggregate存在未定义的聚合方法时
200 ENTITY_QUERY_SORTBY_ERROR sortby字段必须在collect、count、aggregate中定义 NULL 当grouping不为空时,sortby字段不是collect、count、aggregate字段时
200 ENTITY_QUERY_FIELD_NOTDECLARE 分组聚合查询字段{field}必须在collect、count、aggregate NULL 当grouping不为空时,且grouping中condition、nestAnd、nestOr查询的field不是collect、count、aggregate字段时
200 ENTITY_QUERY_KEEPFIELD_NOTDECLARE 分组聚合查询keep字段{xxx}未定义 NULL 当grouping不为空时,当select中keep.xxx的field{xxx}不是keep中定义字段时
200 CLASS_READPERMISSION_REQUIRED 缺少实体类{bosclass}的读权限 NULL 当实体启用了类权限,但当前用户没有类的读权限时

1.5. 注意事项:

1、对象类指数据模型中配置的对象类。

2、满足一般entity的查询要求。

3、目前不支持value值为数组的查询。

4、operator仅支持==,!=,<,<=,>,>=,lik,regex, in, notIn,isNull,notNull 操作: ==:等于 !=:不等于 <:小于 <=:小于等于

>:大于
>=:大于等于
like:模糊查询,如当field为name,value为AAA时,则查找name属性中值包含AAA的实体对象。
regex:正则表达式,如 ^a 表示查询以a开头的实体。
in: 数组中是否包含值,如field为name,value为["A","B","C"],则查找name的值是"A"、"B"、"C"的实体对象
notIn: 数组中是否不包含值,如field为name,value为["A","B","C"],则查找name的值不是"A"、"B"、"C"的实体对象
isNull: 为空,如field为name,则查找name的值为空或者name属性不存在的实体对象
notNull: 不为空,如field为name,则查找name的值不为空的实体对象

5、查询某一个实体对象信息时,返回的body由parameter和relationship两部分构成。在body中可传入select参数, 则返回的parameter中属性字段即为select参数中指定字段,若未传入select参数或者select参数为空,则返回整个实体信息。若noRelation为true,返回值中没有parameter属性;relationship中为用户有权限读取的与此实体对象关联的所有一级关系。

6、condition参数中number可不传入,如传入且值为true则operator值不可为like,且比较时将数据转换为数字后再比较;如number值为false、空或number不传入,则进行字符串比较。

7、当noRelation为false时,仅返回用户有权限获取的关联关系。

8、noRelation如若未传默认值为false,如若参数值非法按默认值为false处理。

9、查询结果需根据accessToken的用户信息进行权限校验和过滤,最小需要读的权限。

10、实体对象查询范围为entity对应数据表中所有数据(基类和子类的实例数据)。

11、condition参数中当有多个搜索条件时,每个条件的logic表示与前一个条件的逻辑关系;第一个搜索条件的logic默认按"AND"处理,对第一个搜索条件的logic设置无需调整。多个条件的连接优先级为OR优先于AND,即当OR、AND同时存在于搜索条件中时,先进行OR连接,再进行AND连接。

12、condition、nestAnd、nestOr非必填,如三者都未传,则返回所有结果。

13、nestAnd、nestOr可以嵌套在任意一个对象的查询条件中,nestAnd表示其内部的查询条件之间为and与关系,nestOr表示其内部的查询条件之间为or或关系。

14、不建议condition与nestAnd/nestOr混用;一般情况简单的查询条件可使用condition,当多个查询条件需要进行and、or的复杂组合时建议使用nestAnd和nestOr。

15、返回count为符合查询条件的结果中用户有读权限的记录总数。

16、查询结果按照sortby字段的order顺序进行排序。sortby不传或为非对象字段时则查询结果不排序。

17、按照参数page和per_page获取用户有读取权限的数据:page>0,per_page>0 则data部分返回第page页数据(如无数据则为空数组),count值为总记录数;page<=0或为空,per_page>0 则data部分返回第一页数据(如无数据则为空数组),count值为总记录数;per_page<=0则data为空数组,count值为总记录数;per_page不传则data部分返回所有数据(如无数据则为空数组),count值为总记录数。

18、当查询条件或返回内容中需使用对象的惟一标识key时,写法为:_key。

19、当查询tags,条件有modelKey或componentKey时,关联tagModelRels查询。

20、当使用grouping分组查询时,返回字段select内容必须是collect、count、aggregate的字段或keep字段、以keep.开头的字段。

21、当使用grouping分组查询时,如果select不传或为空,则返回collect、count、aggregate的字段和keep。

22、当使用grouping分组查询时,keep为JSON数组,内容是JSON对象,如果select字段为keep.xx,则返回该分组中xx字段所有值的数组形式。

23、当使用grouping分组查询时,聚合函数支持MAX、MIN、SUM、AVERAGE四种,分别取分组中最大值、最小值、总和、平均值。

24、当实体类entity启用了类权限时,需要当前用户对该实体类拥有读权限。

考虑到模糊查询的功能, 建议请求的值按照下表进行处理。

特别字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \(\)
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \.
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n''\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^
{ 标记限定符表达式的开始。要匹配 {,请使用 {
l 指明两项之间的一个选择。要匹配 l,请使用 l
版权所有@盈嘉互联(北京)科技有限公司 京ICP备15051988号-9 Copyright © 2022 all right reserved,powered by Gitbook该文件修订时间: 2022-05-16 19:01:04

results matching ""

    No results matching ""