我对Sharepoint知之甚少。我们有一个SP站点: http://host/sites/project/subproject/LIBRARY%20Name/Forms/AllItems.aspx
在浏览器中导航到此处显示了一个文件列表。 我想使用SPs REST API以编程方式访问这些文件。
我了解到,通过http://host/_vti_bin/ListData.svc网址可以访问REST API。在浏览器中,它返回包含服务,文档,图像等条目的XML。
要访问文件,我尝试了以下网址:
http://host/_vti_bin/ListData.svc/Documents
http://host/_vti_bin/ListData.svc/Documents('LIBRARY%20Name')
http://host/_vti_bin/ListData.svc/Documents?$select=NAME('LIBRARY%20Name')
,以及许多其他变体。
我的问题是,鉴于我们网站的网址,REST API服务网址是什么样的?
由于
答案 0 :(得分:2)
除SharePoint 2013及更高版本外,REST API for SharePoint 2010支持相对严格的资源集,特别是不支持文件资源。
话虽如此,您可以考虑使用以下方法下载文件。
为了从库中下载特定文件,我们假设 除了 web url 和库名之外,还提供了列表项ID 。
第一个GET
请求使用以下端点返回所谓的文档项(Microsoft.SharePoint.DataService.DocumentsItem
类型):
https://<weburl>/_vti_bin/listdata.svc/<listname>(<itemid>)
检索到文档项后,可以从Path
和Name
属性中提取文件网址(参见下面的示例),最后通过HTTP GET
C#示例
var webUrl = "https://intranet.contoso.com/";
var listName = "Documents"; //<-list name goes here
var itemId = 1; //<-list item id goes here
using (var client = new WebClient())
{
client.BaseAddress = webUrl;
client.Credentials = credentials;
client.Headers.Add(HttpRequestHeader.Accept, "application/json;odata=verbose");
//client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
var url = String.Format("_vti_bin/listdata.svc/{0}({1})",listName,itemId);
var content = client.DownloadString(url);
var json = JObject.Parse(content);
//extract file url
var fileUrl = (string)json["d"]["Path"] + "/" + (string)json["d"]["Name"];
Console.WriteLine(fileUrl);
//download a file
var fileName = Path.GetFileName(fileUrl);
client.DownloadFile(fileUrl,fileName);
}