REST サービスで表される SharePoint データ構造内を移動する

SharePoint REST サービスで作業するときは、多くの場合、特定の SharePoint アイテムの URL を知ることから始めますが、アイテムが保存されているフォルダーまたはライブライの構造体など、関連するアイテムにアクセスする必要性に気付かれるでしょう。 たとえば、ユーザーが SharePoint ライブラリ内のドキュメントの URL を入力するアドインを作成するとします。 アドインでその URL を分割し、実際の SharePoint サイト URL を明らかにする必要があります。 それが完了したら、ユーザーに代わって、アドインで関連するアイテムまたはリソースの作成、更新、削除などの要求をさらに行うことができます。

これを行うには、アドインで次の情報に関して SharePoint を照会する必要があります。

  • リソースを含むサイトおよびサイト コレクションのサーバー相対 URL
  • POSTPUTMERGE、および DELETE などのリソースの状態を変更する要求を実行できるようにするフォーム ダイジェスト。

基本ステップ

  1. サイトとサイト コレクションのアドレスおよびフォーム ダイジェストにアクセスするための指定された URL と一緒に /contextinfo 演算子を使用します。 /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. REST サービス ポインターと /contextinfo 演算子を URL に追加します。

    POST https://{site_url}/_api/doclib/contextinfo
    Authorization: "Bearer " + accessToken
    Accept: "application/json;odata=verbose"
    
  4. 応答からフォーム ダイジェストと webFullUrl プロパティを読み取ります。

  5. REST サービス ポインター _api を Web URL に追加します。

  6. 結果の URL とフォーム ダイジェストを使って、必要な他のリソースを要求します。

ヒント

GET 要求を行うか、検証された OAuth トークンを使って要求する場合は、フォーム ダイジェストを渡す必要はありません。

SharePoint サーバー オブジェクト モデルを使ってサイト構造内を移動する場合は、SPWeb.ParentWebSPWeb.Webs のプロパティを使って、親サイトと子サイトを表すオブジェクトにアクセスします。

対応する REST リソース (web/parentwebweb/webs) は、サイトを表すオブジェクトを返しません。 これは、REST サービスが OData の基準に準拠しており、完全なサイトの表現を返すとこれらの要求が非効率的になるためです。 代わりに、サイトのスカラー プロパティを含む WebInfo オブジェクトを返します。ただし、コレクションやフィールド コレクションなどの関連するエンティティ セットは含まれません。

特定の親サイトまたは子サイトに移動するには、ID または Title のプロパティを使用して、そのサイトへの適切な REST URL を構築します。 そこからサイトの関連するエンティティ セットにアクセスできます。

SharePoint REST サービスは、URL の構築による、サイトのフォルダー階層の走査をサポートしていません。 代わりに、REST で Web.GetFolderByServerRelativeUrl メソッドに相当するものを使用します。 次に例を示します。

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 プロパティ 説明
Created サイトが作成された日時を特定する値を取得します。
Description サイトの説明を取得または設定します。
Id サイト識別子を特定する値を取得します。
Language サイトで使用されている言語のロケール ID (LCID) を特定する値を取得します。
LastItemModifiedDate サイトでアイテムが最後に更新された日時を特定する値を取得します。
Title サイトのタイトルを取得または設定します。
WebTemplateId サイト テンプレートの ID を取得します。

関連項目