> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kasoftware.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 过滤规则

> 使用 OData 过滤从知行之桥系统 API 检索特定资源集。

系统 API 支持 OData 过滤以检索特定的资源集。在目标 URL 中，OData 过滤器被设置为 `$filter` 查询参数。以下逻辑运算符可用于构建 OData 过滤器：

| 运算符 | 描述 |
| - | - |
| **eq** | 等于 |
| **ne** | 不等于 |
| **gt** | 大于 |
| **ge** | 大于或等于 |
| **lt** | 小于 |
| **le** | 小于或等于 |
| **not** | 否定 |

例如，以下 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')`：仅返回指定属性包含指定值的资源

例如，以下 API 请求用于检索应用程序处理的所有 XML 文件的事务日志元数据：

`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`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.