
使用 REST 处理列表和列表项 和使用 REST 处理文件夹和文件更加详细地说明了如何使用核心的 SharePoint 实体。请参阅 SharePoint 2013:使用应用程序中的 REST 执行基本数据访问 *** 作,它通过示例向您演示如何在使用 C# 编写的 ASP.NET Web 应用程序的上下文中执行许多这些 *** 作。
有关 SharePoint 2013 平台上可用的 API 集的更多详细信息,请参阅在 SharePoint 2013 中选择正确的 API 集。有关如何使用其他客户端 API 的信息,请参阅如何:使用 SharePoint 2013 中的 JavaScript 库代码完成基本 *** 作、如何:使用 SharePoint 2013 中的 JavaScript 库代码完成基本 *** 作和为 SharePoint 2013 生成移动应用程序。
SharePoint 2013 REST 服务中的 HTTP *** 作
SharePoint 2013 REST 服务中的终结点对应于 SharePoint 客户端对象模型中的类型和成员。通过使用 HTTP 请求,您可以使用这些 REST 终结点对 SharePoint 实体(例如列表和网站)执行典型的 CRUD(Create、Read、Update 和 Delete) *** 作。
通常,表示 Read 的端点映射到 HTTP GET 命令。表示更新 *** 作的端点映射到 HTTP POST 命令,而表示更新或插入 *** 作的端点则映射到 HTTP PUT 命令。
在 SharePoint 2013 中,使用 POST 可以创建注入列表和网站的工件。SharePoint 2013 REST 服务支持将包括对象定义的 POST 命令发送到表示集合的终结点。例如,您可以将 ATOM 中包括新列表定义的 POST 命令发送到以下 URL,以创建 SharePoint 列表:
http://<site url>/_api/web/lists
对于 POST *** 作,任何不需要的属性将设置为其默认值。如果您尝试在 POST *** 作过程中设置只读属性,则服务将返回异常。
使用 PUT、PATCH 和 MERGE *** 作可以更新现有 SharePoint 对象。任何表示对象属性 set *** 作的服务终结点均支持 PUT 请求和MERGE 请求。对于 MERGE 请求,设置属性是可选的;任何未显式设置的属性将保留其当前属性。但是,对于 PUT 命令,任何未显式设置的属性将设置为其默认属性。此外,如果您在使用 HTTP PUT 命令时未在对象更新中指定所有必需的属性,则 REST 服务将返回异常。
对某个特定终结点 URL 使用 HTTP DELETE 命令可删除该终结点表示的 SharePoint 对象。对于可循环的对象(如列表、文件和列表项),这将导致 Recycle *** 作。
使用 SharePoint 2013 REST 界面读取数据
若要使用 SharePoint 2013 内置的 REST 功能,请您使用 OData 标准(它对应于您要使用的客户端对象模型 API)构建 REST 样式的 HTTP 请求。每个 SharePoint 实体都在您的目标 SharePoint 2013 网站上的终结点上公开,其元数据由 XML 或 JSON 格式表示。您可以用任何一种语言(包括但不限于 JavaScript 和 C#)发出 HTTP 请求。
要从 REST 终结点读取信息,您必须知道该终结点的 URL 和在该终结点上公开的 SharePoint 实体的 OData 表示。例如,若要检索特定 SharePoint 网站中的所有列表,应向 http://<site url>/_api/web/lists 发出 GET 请求。您可以在浏览器中导航到该 URL 并查看返回的 XML。当您在代码中发出请求时,可以指定接收 XML 还是 JSON 形式的列表的 OData 表示。
以下 C# 代码代码演示了如何发出 GET 请求,该请求通过使用 JQuery 返回站点的所有列表的 JSON 表示。它还假定您有一个有效的 OAuth 访问令牌,存储在 accessToken 变量中。如果您从应用程序 Web 内部进行此调用(就像在 SharePoint 承载的应用程序中一样),则不需要访问令牌。请注意,您无法从浏览器客户端上运行的代码中获取访问令牌。访问令牌必须从服务器上运行的代码中获取。SharePoint 2013 相关应用程序的上下文令牌 OAuth 流和 SharePoint 2013 相关应用程序的身份验证代码 OAuth 流说明了如何获取访问令牌。
C#
HttpWebRequest endpointRequest =
(HttpWebRequest)HttpWebRequest.Create(
"http://<site url>/_api/web/lists")
endpointRequest.Method = "GET"
endpointRequest.Accept = "application/jsonodata=verbose"
endpointRequest.Headers.Add("Authorization",
"Bearer " + accessToken)
HttpWebResponse endpointResponse =
(HttpWebResponse)endpointRequest.GetResponse()
如果您使用 JavaScript 编写应用程序但使用 SharePoint 2013 跨域库,此请求看起来会有点不同。在这种情况下,您不需要提供访问令牌。以下代码演示如果您使用跨域库并要以 XML(而不是 JSON)格式接收列表的 OData 表示,此请求会是怎样的。(由于 Atom 是默认的响应格式,您无需包含 Accept 标头。)请参阅如何:使用跨域库从应用程序访问 SharePoint 2013 数据,了解有关使用跨域库的详细信息。
JavaScript
var executor = new SP.RequestExecutor(appweburl)
executor.executeAsync(
{
url:
appweburl +
"/_api/SP.AppContextSite(@target)/web/lists?@target='" +
hostweburl + "'",
method: "GET",
success: successHandler,
error: errorHandler
}
)
以下示例中的代码显示了如何使用 C# 请求网站中所有列表的 JSON 表示。它假定您有一个存储在 accessToken 变量中的 OAuth 访问令牌。
C#
HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + "/_api/web/lists")
endpointRequest.Method = "GET"
endpointRequest.Accept = "application/jsonodata=verbose"
endpointRequest.Headers.Add("Authorization", "Bearer " + accessToken)
HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse()
获取没有返回资源的属性
当您检索资源时将返回多个属性值,但对于某些属性,您必须直接向属性终结点发送 GET 请求。这是显示 SharePoint 实体的属性的典型行为。
以下示例显示了如何通过将属性名称附加到资源端点来获取属性。示例从 File 资源获取 Author 属性的值。
http://<网站 url>/_api/web/getfilebyserverrelativeurl('/<文件夹名称>/<文件名称>')/作者
要获取 JSON 格式的结果,请加入一个设置为 "application/jsonodata=verbose" 的 Accept 标头。
通过使用 REST 界面写入数据
您可以通过构建发送到适当终结点的 REST 样式的 HTTP 请求来创建和更新 SharePoint 实体,就像您阅读数据一样。但是,一个关键的区别是您使用 POST 请求。当您更新实体时,您还通过将一个 PUT 或 MERGE HTTP 请求方法作为 X-HTTP-Method 键的值添加到您的请求标头,来传递该 HTTP 请求方法。MERGE 方法仅更新您指定的实体的属性,而 PUT 方法会将现有实体替换为您在 POST 的正文中提供的一个新实体。使用 DELETE 方法可删除实体。当您创建或更新实体时,您必须在 HTTP 请求的正文中提供您要创建或更改的实体的 OData 表示。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)