SharePoint REST API - REST請求導航的資料結構

Justin-Liu發表於2017-05-01

部落格地址:http://blog.csdn.net/FoxDave

從一個既定的URL獲取其他SharePoint資源

當你用SharePoint REST服務進行開發的時候,你經常會從指定的一個SharePoint物件開始,但是卻想要訪問相關的其他資源,比如列表項所在的資料夾或文件庫的結構。例如,假如你想要建立一個Add-in來訪問文件庫中的文件。這個Add-in必須識別真正的SharePoint網站URL,當你這麼做的時候,Add-in能夠建立更多的請求來建立、更新或刪除相關的列表項或資源。

想要實現這個的話,你的Add-in需要如下資訊:

>包含想要訪問資源的網站集合網站相對URL

>一個能夠使你完成請求操作的表單摘要,HTTP請求動作如POST、PUT、MERGE和DELETE。

基本過程如下:

1. 在既定的URL使用/contextinfo操作來訪問SharePoint網站集地址,以如下的格式:

http://server/web/doclib/forms/_api/contextinfo

出於安全性的考慮,該操作只支援POST請求。

2. 通過/contextinfo操作返回的SPContextWebInformation物件屬性來訪問額外需要的資源。

可以嘗試下面的操作步驟:

1. 從一個既定的SharePoint列表項開始,如:http://site/web/doclib/myDocument.docx。

2. 去掉URL的最後一段,就相當於在訪問一個文件庫、資料夾或者列表:http://site/web/doclib/

3. 將/contextinfo加到URL後面,如:http://site/web/doclib/_api/contextinfo

4. 從請求的響應中獲取表單摘要和網站的完整URL。

5. 將_api加到網站URL後面。

6.用上面得到的這些內容去訪問其他你需要的資源。

如果你使用的是GET請求或者使用了一個有效的OAuth令牌,那麼你不需要傳遞表單摘要。

訪問父網站和子網站

當你使用服務端物件模型訪問你的網站結構時,可以使用SPWeb.ParentWeb和SPWeb.Webs屬性來訪問父網站和子網站。

與其相應的REST資源為web/parentweb和web/webs。但是不要返回網站物件的資源,因為REST服務依據OData標準,返回完整的網站屬性會使請求變得非常的低效。一般會返回一個WebInfo物件,該物件包含了網站的標量屬性而沒有關聯的屬性集合如欄位集合。

訪問資料夾結構

SharePoint REST服務不支援按照垂直級別訪問SharePoint的資料夾,需要通過Web.GetFolderByServerRelativeUrl來實現。

/_vti_bin/client.svc/web/lists/SharedDocuments/folder1/stuff/things/Recycle(不支援)

/_vti_bin/client.svc/web/GetFolderByServerRelativeUrl('SharedDocuments/folder1/stuff/things')/Recycle(支援)

SPContextWebInformation物件屬性

SPContextWebInformation PropertyDescription
webFullUrl獲取最近網站的ServerRelativeURL。
siteFullUrl獲取網站集中根網站的ServerRelativeURL。如果最近網站就是根網站,該屬性值跟webFullUrl相同。
formDigestValue獲取伺服器請求的表單摘要。
LibraryVersion獲取REST庫的當前版本。
SupportedSchemaVersions獲取支援的REST/CSOM庫的版本清單。
WebInfo物件

WebInfo propertyDescription
CreatedGets a value that specifies when the site was created.
DescriptionGets or sets the description for the site.
IdGets a value that specifies the site identifier.
LanguageGets a value that specifies the locale ID (LCID) for the language that is used on the site.
LastItemModifiedDateGets a value that specifies when an item was last modified in the site.
TitleGets or sets the title for the site.
WebTemplateIdGets the identifier of the site template.
本篇就闡述到這裡。

相關文章