导航 REST 服务中表示的 SharePoint 数据结构

使用 SharePoint REST 服务时,通常首先知道某个特定的 SharePoint 项的 URL,但需要访问相关项,例如该项所在的文件夹或库结构。 例如,假设创建外接程序,用户在其中输入 SharePoint 库中文档的 URL。 加载项必须分解该 URL 以获取实际的 SharePoint 网站 URL。 完成该操作后,加载项将代表用户从此网站进行更多请求,如创建、更新或删除相关项或资源。

为此,加载项需要查询 SharePoint,以获取以下信息:

  • 包含该资源的网站和网站集的服务器相对 URL。
  • 可执行更改资源状态请求的表单摘要,如 POSTPUTMERGEDELETE

基本流程

  1. /contextinfo 运算符与给定的 URL 配合使用,以访问网站和网站集地址和表单摘要。 使用如下格式的 /contextinfo 运算符:

    POST https://{site_url}/_api/contextinfo
    Authorization: "Bearer " + accessToken
    Accept: "application/json;odata=verbose"
    

    为了提高安全性,防止跨站点脚本尝试,/contextinfo 运算符仅接受 POST 请求。

  2. 使用 /contextinfo 运算符返回的 SPContextWebInformation 对象属性根据需要访问其他资源。

试用

  1. 从给定 SharePoint 项目的 URL 开始。 例如: https://{site_url}/doclib/myDocument.docx

  2. 从 URL 的结尾处删除指定资源的名称,以便 URL 指向文档库、文件夹或列表。 在本示例中为:https://{site_url}/doclib/

  3. 向 URL 追加 REST 服务指针和 /contextinfo 运算符:

    POST https://{site_url}/_api/doclib/contextinfo
    Authorization: "Bearer " + accessToken
    Accept: "application/json;odata=verbose"
    
  4. 读取响应中的表单摘要和 webFullUrl 属性。

  5. 向 Web URL 追加 REST 服务指针 _api

  6. 使用生成的 URL 和表单摘要请求其他所需资源。

提示

如果要进行 GET 请求,或者使用经验证的 OAuth 令牌提出请求,无需传递表单摘要。

如果使用 SharePoint 服务器对象模型导航站点结构,可以使用 SPWeb.ParentWebSPWeb.Webs 属性访问表示父站点和子站点的对象。

对应的 REST 资源(web/parentwebweb/webs)不返回表示站点的对象。 这是因为 REST 服务符合 OData 标准,而返回完整的站点表示形式会导致此类请求效率低下。 相反,它们返回包含站点标量属性的 WebInfo 对象,但其中不包含集合或字段集合等相关实体集。

若要转到特定父站点或子站点,请使用 IdTitle 属性构造相应站点的 REST URL。 由此,可访问相应站点的相关实体集。

SharePoint REST 服务不支持通过 URL 构造遍历网站的文件夹层次结构。 请改用与 Web.GetFolderByServerRelativeUrl 方法等效的 REST。 例如:

REST 服务不支持的导航:

https://{site_url}/_vti_bin/client.svc/web/lists/SharedDocuments/folder1/stuff/things/Recycle

REST 服务支持的导航:

https://{site_url}/_vti_bin/client.svc/web/GetFolderByServerRelativeUrl('SharedDocuments/folder1/stuff/things')/Recycle

SPContextWebInformation 对象属性

SPContextWebInformation 属性 说明
webFullUrl 获取最近网站相对于服务器的 URL。
siteFullUrl 获取包含网站的网站集根的服务器相关 URL。
如果最近的 Web 是某网站集的根,那么 webFullUrl 属性的值等于 siteFullUrl 属性的值。
formDigestValue 获取服务器的请求表单摘要。
LibraryVersion 获取当前版本的 REST 库。
SupportedSchemaVersions 获取支持的 REST/CSOM 库的架构版本。

WebInfo 对象

WebInfo 属性 说明
创建时间 获取一个值,该值指定网站的创建时间。
说明 获取或设置网站的说明。
ID 获取一个值,该值指定网站标识符。
语言 获取一个值,该值指定网站上所使用的语言的区域设置 ID (LCID)。
LastItemModifiedDate 获取一个值,该值指定某个项在网站中最后一次修改的时间。
标题 获取或设置网站的标题。
WebTemplateId 获取网站模板的标识符。

另请参阅