$filter 查询参数。以下逻辑运算符可用于构建 OData 过滤器:
例如,以下 API 请求使用 gt 来检索 2019 年 8 月 26 日之后所有事务的事务日志元数据:
GET http://mydomain.com:8001/api.rsc/transactions?$filter=timestamp gt 2019-08-26
OData 过滤器可与 and 和 or 关键字结合使用。例如,以下 API 请求将检索 2019 年 8 月 26 日之后特定端口事务的所有事务日志元数据:
http://mydomain.com:8001/api.rsc/transactions?$filter=timestamp gt 2019-08-26 and connectorid eq myConnector
系统 API 也支持 OData 过滤器中的以下函数:
startswith(property, 'value'):仅返回指定属性以指定值开头的资源endswith(property, 'value'):仅返回指定属性以指定值结尾的资源contains(property, 'value'):仅返回指定属性包含指定值的资源
GET http://mydomain.com:8001/api.rsc/transactions?$filter=contains(filepath,'.xml')
选择指定字段
除了$filter 查询参数之外,还可设置 $select 查询参数来限制响应中返回的特定字段。此参数应设置为需要检索的属性的逗号分隔列表。例如,以下 API 请求用于检索每个已配置端口的名称和工作区,但不检索这些端口的其他配置信息:
GET http://mydomain.com:8001/api.rsc/connectors?$select=connectorid,workspace
API 还支持从单个资源中检索单个值。例如,以下 API 请求返回指定端口的工作区:
http://localhost:8001/api.rsc/connectors('myConnector')/workspace/$value
选择特定端口类型的属性
默认的 OData 响应格式只返回端口资源架构中声明的属性(例如connectorid、workspaceid 和 connectortype)。特定端口类型的属性(例如 AS2 端口的 as2identifier、AS2 和 HTTP 端口的 url,或 SFTP 端口的 remotehost)未在架构中声明,因此在默认格式下使用 $select 时会被静默忽略。
要在 $select 查询中包含特定端口类型的属性,请在请求中添加 @json:
GET http://mydomain.com:8001/api.rsc/connectors?@json&$select=connectorid,as2identifier
如果某个特定端口类型的属性不适用于某种端口类型,则响应中该端口的行不会包含此属性。这是预期行为,而不是错误。例如,as2identifier 会出现在 AS2 端口的行中,但不会出现在 SFTP 或 FTP 端口的行中。
可以在同一个 $select 列表中组合标准属性和特定端口类型的属性:
GET http://mydomain.com:8001/api.rsc/connectors?@json&$select=connectorid,workspaceid,as2identifier
排序
除了$filter 和 $select 之外,还可设置 $orderby 查询参数用于将结果按照特定顺序排序。此参数用以下语法指定:
$orderby=columnName sortDirection
其中,columnName 是用于排序的列(例如 filename、connectorId、timestamp),sortDirection 为 asc(升序)或 desc(降序)。
例如,以下 API 请求用于检索应用程序处理的所有 XML 文件的事务日志元数据,然后根据文件是 sent 还是 received 对结果进行分组:
GET http://mydomain.com:8001/api.rsc/transactions?$filter=contains(filepath,'.xml')&$orderby=status asc
通过将 $orderby 参数设置为逗号分隔列表,可指定多个排序条件。列表中靠前的条件优先于列表中靠后的条件。例如,下列 API 请求与前一个请求检索相同的数据,但在 sent 或 received 组中,文件按大小从大到小列出:
GET http://mydomain.com:8001/api.rsc/transactions?$filter=contains(filepath,'.xml')&$orderby=status asc, filesize desc