REST サービスで表される SharePoint データ構造内を移動する
SharePoint REST サービスで作業するときは、多くの場合、特定の SharePoint アイテムの URL を知ることから始めますが、アイテムが保存されているフォルダーまたはライブライの構造体など、関連するアイテムにアクセスする必要性に気付かれるでしょう。 たとえば、ユーザーが SharePoint ライブラリ内のドキュメントの URL を入力するアドインを作成するとします。 アドインでその URL を分割し、実際の SharePoint サイト URL を明らかにする必要があります。 それが完了したら、ユーザーに代わって、アドインで関連するアイテムまたはリソースの作成、更新、削除などの要求をさらに行うことができます。
これを行うには、アドインで次の情報に関して SharePoint を照会する必要があります。
- リソースを含むサイトおよびサイト コレクションのサーバー相対 URL
- POST、PUT、MERGE、および DELETE などのリソースの状態を変更する要求を実行できるようにするフォーム ダイジェスト。
基本ステップ
サイトとサイト コレクションのアドレスおよびフォーム ダイジェストにアクセスするための指定された URL と一緒に
/contextinfo
演算子を使用します。/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/
REST サービス ポインターと
/contextinfo
演算子を URL に追加します。POST https://{site_url}/_api/doclib/contextinfo Authorization: "Bearer " + accessToken Accept: "application/json;odata=verbose"
応答からフォーム ダイジェストと webFullUrl プロパティを読み取ります。
REST サービス ポインター
_api
を Web URL に追加します。結果の URL とフォーム ダイジェストを使って、必要な他のリソースを要求します。
ヒント
GET 要求を行うか、検証された OAuth トークンを使って要求する場合は、フォーム ダイジェストを渡す必要はありません。
親サイトと子サイト間の移動
SharePoint サーバー オブジェクト モデルを使ってサイト構造内を移動する場合は、SPWeb.ParentWeb と SPWeb.Webs のプロパティを使って、親サイトと子サイトを表すオブジェクトにアクセスします。
対応する REST リソース (web/parentweb
と web/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 を取得します。 |