在 SharePoint REST 请求中使用 OData 查询操作

SharePoint REST 服务支持多种 OData 查询字符串运算符,使用这些运算符,您可以选择、筛选及订购您请求的数据。

提示

SharePoint Online(和本地 SharePoint 2016 及更高版本)REST 服务支持使用 OData $batch 查询选项,将多个请求合并到一个服务调用中。 有关详细信息和代码示例链接,请参阅使用 REST API 发出批处理请求

选择要返回的字段

使用 $select 查询选项指定对于给定列表、列表项或实体集表示的其他 SharePoint 对象将返回哪些字段。 可以使用 $select=* 返回所有可用字段。

注意

通常,如果未指定 $select 查询选项,REST 服务默认返回所有可用字段。 但是,在少数几种情况下,某些 SharePoint 对象包含检索资源极为密集的属性;为了优化 REST 服务性能,默认查询中并不包含这些属性,必须显式请求。例如,不会默认返回 SPWeb.EffectiveBasePermissions 属性,必须使用 $select 查询选项进行显式请求。

还可指定请求返回其他列表中的投影字段和查找值。 为此,请同时在 $select$expand 查询选项中指定字段名称。 例如:

GET https://{site_url}/_api/web/lists('{list_guid}')/items?$select=Title,Products/Name&$expand=Products/Name
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

不支持批量扩展和选择相关项。

选择要返回的项

使用 $filter 查询选项来选择要返回的项。 SharePoint REST 服务支持的 OData 查询运算符列出了可用于 SharePoint REST 服务的筛选器查询比较选项和函数。

单个值查阅字段的查询

单个值循环字段由 SharePoint REST 服务中两个单独的字段表示:一个字段表示实际字段值,另一个表示字段名称。 可以像对该数据类型的任何其他字段一样,对查找字段值执行查询。 例如,如果查询字段值为字符串,则可以在查询中使用字符串比较选项。

用户查询

在 SharePoint REST 服务中,用户用用户的友好(显示)名称,而非其别名或域\别名组合表示。 因此,您必须阵对用户的友好名称构造用户查询。

注意

不支持基于成员身份的用户查询。 不支持通过当前用户的 ID 使用 Current 运算符执行查询。

多值查阅字段和用户的查询

由于多值查阅字段作为多值字符串返回,因此无法对其进行查询(例如,不支持 Includes 元素或 NotIncludes 元素的等效值)。

对返回的项排序

使用 $orderby 查询选项可指定查询返回集中项的排序方式。 若要按多个字段排序,请指定一个以逗号分隔的字段列表。 也可通过向查询附加 ascdesc 关键字来指定按升序还是降序对项进行排序。

对返回的项进行分页

使用 $top$skiptoken 查询选项可选择通过其他方式由查询返回的项的子集。

注意

$skip 查询选项不适用于查询 SharePoint 列表项。

通过 $top 选项,可选择要返回的返回集的前 n 个项。 例如,以下 URI 请求仅实际返回预期返回集中的前十个项:

GET https://{site_url}/_api/web/lists('{list_guid}')/items?$top=10`
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

通过 $skiptoken 查询选项,可以跳过某些项,直至到达指定项,然后返回剩余的项。

GET https://{site_url}/_api/web/lists('{list_guid}')/items?$skiptoken=Paged=TRUE%26p_ID=5`
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

注意

使用这些查询选项时,需考虑在 OData 中按顺序分页。 例如,假设要实现“下一页”按钮以显示 SharePoint 列表项。 使用 REST 服务,使单击按钮时返回项 1 至项 20,然后返回项 21 到项 40,以此类推。 但是,假设另一个用户在多次单击“下一页”按钮之间删除项 4 和项 18。 在这种情况下,将重置剩余项的序号位置,实际上显示项 21 到项 40 将跳过两项。

SharePoint REST 服务支持的 OData 查询运算符

支持 不支持
数字比较 (lt le gt ge eq ne) 算术运算符 (add、sub、mul、div、mod)
基本数学函数(round、floor、ceiling)
字符串比较
startswith( {Col to query},'{string to check}' )
substringof( '{string to check}', {Col to query} )
eq
ne
endswith、replace、substring、tolower、toupper、trim、concat
日期和时间函数 day()、month()、year()、hour()、minute()、second() DateTimeRangesOverlap 运算符
关于日期时间是否属于周期性日期时间模式的查询

下图显示支持的 OData 查询选项。

支持的 OData 查询选项

SharePoint REST 服务查询选项语法

另请参阅