云服务器内容精选

  • 多字段排序 多字段排序一般使用“sorts”字段表示,其结构如下: { "sorts": [ { "sort": "DESC", "orderBy": "description" }, { "sort": "ASC", "orderBy": "name" } ] } 使用“sorts”字段后,将按照其列表顺序进行排序。如上所示,对象会先按照“description”进行倒序排序,再按照“name”进行正序排序。 以“services/api/SZAPITEST202211280329/find/20/1”的URI为例,使用如下接口进行多字段排序。 Find接口: { "params": { "sorts": [ { "sort": "DESC", "orderBy": "description" }, { "sort": "ASC", "orderBy": "name" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] }, { "conditionName": "rdmDeleteFlag", "operator": "=", "conditionValues": [ "0" ] } ] } } } Query接口: { "params": { "sorts": [ { "sort": "DESC", "orderBy": "description" }, { "sort": "ASC", "orderBy": "name" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] }, { "conditionName": "rdmDeleteFlag", "operator": "=", "conditionValues": [ "0" ] } ] } } } Select接口: { "params": { "selectedField": [ { "name": "name", "nameAs": "nameAsName" }, { "name": "description", "nameAs": "nameAsDescription" }, { "name": "creator" }, { "name": "id" } ], "sorts": [ { "sort": "DESC", "orderBy": "name" }, { "sort": "asc", "orderBy": "id" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] } ] } } }
  • 单个条件 示例1: { "params": { "sort": "desc", "orderBy": "name", "filter": { "conditionName": "name", "operator": "=", "conditionValues": [ "wyc" ] } } } 示例2: { "params": { "sort": "desc", "orderBy": "name", "filter": { "joiner": "and", // and或者or "conditions": [ { "conditionName": "name", "operator": "=", "conditionValues": [ "wyc" ] } ] } } }
  • 分类属性 分类属性的固定前缀为“clsAttrs”,格式有“clsAttrs.分类名.分类内属性名”和“clsAttrs.分类名.分类内属性名.value”两种。其中,“clsAttrs.分类名.分类内属性名.value”适用于自定义精度的分类属性。 { "params": { "filter": { "joiner": "and", "conditions": [ { "conditionName": "clsAttrs.clsAttrName.attrName1", "operator": "=", "conditionValues": [ "123" ] }, { "conditionName": "clsAttrs.clsAttrName.attrName2.value", "operator": "=", "conditionValues": [ "12.123" ] } ] } } }
  • ISNULL和NOTNULL传参 { "params": { "sort": "desc", "orderBy": "name", "filter": { "joiner": "and", // 或者or "conditions": [ { "conditionName": "name", "operator": "ISNULL", // 或者NOTNULL "conditionValues": [ // conditionValues可不写 "wyc" ] } ] } } }
  • 嵌套and、or和in { "params": { "sort": "desc", "orderBy": "name", "filter": { "joiner": "and", "conditions": [ { "conditionName": "name", "operator": "=", "conditionValues": [ "wyc" ] }, { "joiner": "or", "conditions": [ { "conditionName": "creator", "operator": "=", "conditionValues": [ "wyc" ] }, { "conditionName": "modifier", "operator": "in", "conditionValues": [ "wyc", "wxf" ] } ] } ] } } } 如上示例可得出如下SQL查询语句: (name=wyc) and ( (creator=wyc) or (modifier in (wyc, wxf) ) ) order by name desc 其中,“joiner”用于控制相同层次的“conditions”间的关系。
  • 参考对象 假设TestQuery的参考对象是SimpleEntity(别名为ref),SimpleEntity的别名为ref,有Long类型的ID字段和String类型的Name字段。用户希望对SimpleEntity过滤ID,其示例代码如下所示: { "params": { "filter": { "joiner": "and", "conditions": [ { "conditionName": "ref.id", "operator": "=", "conditionValues": [ "406889137980243968" ] } ] } } } 如需过滤其他属性,基于新增过滤条件即可。
  • 扩展属性 扩展属性的固定前缀为“extAttrs”,格式有“extAttrs.扩展属性名”和“extAttrs.扩展属性名.value”两种。其中,“extAttrs.扩展属性名.value”适用于自定义精度的扩展属性。 { "params": { "filter": { "joiner": "and", "conditions": [ { "conditionName": "extAttrs.extAttrName1", "operator": "=", "conditionValues": [ "406889137980243968" ] }, { "conditionName": "extAttrs.extAttrName2.value", "operator": "=", "conditionValues": [ "12.133" ] } ] } } }
  • 扩展类型+扩展属性/分类属性 扩展类型+扩展属性/分类属性的固定前缀为“clsAttrs”,格式有“clsAttrs.分类名.分类内属性名”和“clsAttrs.分类名.分类内属性名.value”两种。其中,“clsAttrs.分类名.分类内属性名.value”适用于自定义精度的扩展类型+扩展属性/分类属性。如需查询此类属性,需额外增加一个过滤条件(rdmExtensionType),用于指明具体的扩展类型。 以“services/dynamic/api/Test0928001/find/20/1”的URI为例: { "params": { "sort": "DESC", "orderBy": "lastUpdateTime", "filter": { "joiner": "and", "conditions": [ { "conditionName": "clsAttrs.A0001.Testz", "operator": "like", "conditionValues": [ "WWW" ] }, { "conditionName": "rdmExtensionType", "operator": "=", "conditionValues": [ "Test0928001" ] } ] }, "isNeedTotal": false } }
  • 排序规则说明 数据实体、关系实体的接口,涉及排序的,根据数据库类型不同,字段首字母排序遵循如下规则: 如果是PostgreSQL数据库,在升降序排序时,先根据字母大小写,然后再根据英文字母顺序进行升降序排序显示。如升序排序时,字段首字母排序显示为B、X、Z、a、b、c。 如果是MySQL数据库,在升降序排序时,先根据英文字母顺序,然后再根据字母大小写进行升降序排序显示。如升序排序时,字段首字母排序显示为a、B、b、c、X、Z。
  • 功能对比 表1 数据实体查询接口 接口 适用场景 查询效率 多字段排序 Get 适用于通过实体或实例的ID,获取某实体或实例所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 不支持。 Batchget 适用于通过实体或实例的ID,获取多个实体或实例所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 不支持。 List 适用于只查询数据模型自身信息的场景。 不支持参考模型属性作为查询条件。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Find 适用于通过指定查询条件,获取符合条件的所有数据模型的所有信息的场景。 模型越复杂,参考对象和扩展属性越多,查询效率越慢。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Query 适用于只查询数据模型所有的列表属性信息的场景。 只返回符合查询条件的对象及列表属性。 查询效率相较于find更快一些。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Count 适用于通过指定查询条件,获取符合条件的数据模型总数的场景。 只返回符合查询条件的对象的记录总数。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。 Select 适用于只查询数据模型指定属性数据的场景。 查询效率较快。 可通过sorts字段进行多字段排序,通过filter字段进行数据过滤。但数据过滤时,还需通过selectedField字段指定属性查询数据。 表2 关系实体查询接口 接口 描述 queryRelatedObjects 用于查询源或目标实体的属性。 batchQueryRelatedObjects 用于批量查询源或目标实体的属性。 queryRelationship 用于查询关系实例的数据。 queryTarget 用于查询目标实体的数据。 deleteTarget 用于删除关系实例。