导航 REST 服务中表示的 SharePoint 数据结构
使用 SharePoint REST 服务时,通常首先知道某个特定的 SharePoint 项的 URL,但需要访问相关项,例如该项所在的文件夹或库结构。 例如,假设创建外接程序,用户在其中输入 SharePoint 库中文档的 URL。 加载项必须分解该 URL 以获取实际的 SharePoint 网站 URL。 完成该操作后,加载项将代表用户从此网站进行更多请求,如创建、更新或删除相关项或资源。
为此,加载项需要查询 SharePoint,以获取以下信息:
- 包含该资源的网站和网站集的服务器相对 URL。
- 可执行更改资源状态请求的表单摘要,如 POST、PUT、MERGE 和 DELETE。
基本流程
将
/contextinfo
运算符与给定的 URL 配合使用,以访问网站和网站集地址和表单摘要。 使用如下格式的/contextinfo
运算符:POST https://{site_url}/_api/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
为了提高安全性,防止跨站点脚本尝试,
/contextinfo
运算符仅接受 POST 请求。使用
/contextinfo
运算符返回的 SPContextWebInformation 对象属性根据需要访问其他资源。
试用
从给定 SharePoint 项目的 URL 开始。 例如: https://{site_url}/doclib/myDocument.docx
从 URL 的结尾处删除指定资源的名称,以便 URL 指向文档库、文件夹或列表。 在本示例中为:https://{site_url}/doclib/
向 URL 追加 REST 服务指针和
/contextinfo
运算符:POST https://{site_url}/_api/doclib/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
读取响应中的表单摘要和 webFullUrl 属性。
向 Web URL 追加 REST 服务指针
_api
。使用生成的 URL 和表单摘要请求其他所需资源。
提示
如果要进行 GET 请求,或者使用经验证的 OAuth 令牌提出请求,无需传递表单摘要。
导航父站点和子站点
如果使用 SharePoint 服务器对象模型导航站点结构,可以使用 SPWeb.ParentWeb 和 SPWeb.Webs 属性访问表示父站点和子站点的对象。
对应的 REST 资源(web/parentweb
和 web/webs
)不返回表示站点的对象。 这是因为 REST 服务符合 OData 标准,而返回完整的站点表示形式会导致此类请求效率低下。 相反,它们返回包含站点标量属性的 WebInfo 对象,但其中不包含集合或字段集合等相关实体集。
若要转到特定父站点或子站点,请使用 Id 或 Title 属性构造相应站点的 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 | 获取网站模板的标识符。 |