SharePoint REST API を使用してリスト データを取得して表示する

完了

このユニットでは、SharePoint Framework API を使用して SharePoint REST API からリスト データを取得する方法について説明します。

SharePoint REST API

SharePoint REST API は、SharePoint サイト内のデータにアクセスするためのメインな方法です。 これは、クライアント側とサーバー側の両方のソリューションで機能します。 クライアント側ソリューションには、SharePoint Framework コンポーネントが含まれており、サーバー側ソリューションは、Azure 関数や Web アプリなど、SharePoint 環境の外部のサーバーで実行されます。

SharePoint クライアント側オブジェクト モデル (CSOM) や SharePoint パターンとプラクティス (PnP) PnPJS ライブラリなど、開発者が SharePoint REST API の操作に使用できる SDK とライブラリは多数あります。

SharePoint REST API により、開発者は SharePoint リストおよびライブラリで CRUD-Q 操作を行うことができます。 CRUD-Q は、作成、読み取り、更新、削除、クエリ操作を意味します。 SharePoint REST API では OData v3 プロトコルと v4 プロトコルが使用されるため、標準的な方法を使用して要求を行い、予測可能な結果を得ることができます。 既定では、SharePoint REST API は、OData v3 形式を使用して要求が送信され、返されると予測します。 開発者は、odata-version HTTP 要求ヘッダーを上書きし、OData v4 形式を使用するように 4 に設定することで、この動作を変更できます。 SharePoint Framework は、既定の構成を使用して自動的にこの操作を行います。

SharePoint REST API にアクセスする

SharePoint REST API は、要求ごとに ID とアクセス許可をチェックするため、要求を行うときに承認の詳細を含める必要があります。 OAuth2 ベアラー トークンを含むauthorization HTTP 要求ヘッダーを含めることで、各要求が承認されます。 このトークンは、認証が成功し、SharePoint REST API にアクセスするアプリに必要なアクセス許可を付与した後、Microsoft Entra IDによって提供されます。 この認証トークンは、SharePoint サーバーから SharePoint REST API に要求を送信するときに必要です。

SharePoint ページでクライアント側スクリプトから要求を送信する場合、承認トークンは必要ありません。 各要求には、SharePoint サイトにログインしたときにブラウザー セッションに追加された Cookie が含まれます。

HTTP 要求ヘッダーは、承認に使用され、OData プロトコルのバージョン、返されるメタデータの量、その他の制御に使用されます。 たとえば、要求を更新または削除するときに、更新または削除するアイテムがアプリケーションが予期しているものとサーバー上で同じバージョンであることを確認するために、if-match HTTP 要求ヘッダーを含めることができます。 このヘッダーを使用すると、開発者は、これらが "最終更新優先" シナリオにないことを確認できます。

OData クエリ演算子

OData 要求の例を次に示します。

https://{{sharepoint-site}}/sites/site/_api/web/lists/getbytitle('Countries')/items?
  $select=Id,Title
  &$filter=Title eq 'United States'
  &$orderby=ID desc
  &$top=1

SharePoint REST API は、_api エンドポイントで始まります。 この例では、URL の残りの部分 (web/lists/getbytitle('Countries')/items) は、特定のリソースを参照するために使用されます。 この例では、現在の SharePoint サイトの Countries リストのアイテムが返されます。

パラメーターに URL のクエリ文字列の$ のプレフィクスが付いていることに注意してください。 これらは、OData クエリ演算子です。 OData クエリ演算子を使用して、各クエリで返されるデータの量を制御します。

$select クエリ演算子を使用して、SharePoint REST API に、アイテム コレクションの特定のフィールドだけを返すように指定します。 $select 演算子がなければ、プロパティの既定のコレクションが返されます。

$filter クエリ演算子を使用して、リストのアイテムのサブセットのみを含めることができます。

$orderby クエリ演算子を使用すると、開発者は、結果を並べ替えるフィールドと並べ替え操作の方向を指定できます。

最後に、$top クエリ演算子を使用して、クエリに結果のサブセットのみを選択します。

この例では、米国 のタイトルを持つ最後のアイテムが応答で返され、それには IDタイトル プロパティのみが含まれます。

SharePoint Framework および SharePoint REST API

SharePoint Framework には、SharePoint REST API に要求を簡単に送信するための API が含まれています。 SPHttpClient API は、context オブジェクトのすべての SharePoint Framework ソリューションで使用できます。 SPHttpClientHttpClient API に拡張されます。これは、すべての最新ブラウザーに含まれている Fetch API のラッパーであり、Fetch API をサポートしていない以前のブラウザー用のポリフィルが含まれます。

HttpClient は、SharePoint Framework API にも含まれます。 開発者はこれを使用して、任意の REST API に HTTP 要求を送信できます。

SPHttpClient API により、必要な HTTP 要求ヘッダーを使用して HTTP 要求が自動的に構成されます。これには、SharePoint REST API OData バージョンを v4 にする設定、応答を各アイテムの最小メタデータのみ含むようにする構成が含まれます。

SharePoint REST API および SharePoint Framework を使用したリスト アイテムの取得

SharePoint REST API に要求を送信するには、現在のコンポーネントの context オブジェクトで spHttpClient オブジェクトを使用します。 HTTP GET または HTTP POST 要求のいずれかを送信するには、get() または post() メソッドを使用します。

private async _getListItems(): Promise<ICountryListItem[]> {
  const response = await this.context.spHttpClient.get(
    this.context.pageContext.web.absoluteUrl + `/_api/web/lists/getbytitle('Countries')/items?$select=Id,Title`,
    SPHttpClient.configurations.v1);

  if (!response.ok) {
    const responseText = await response.text();
    throw new Error(responseText);
  }

  const responseJson = await response.json();

  return responseJson.value as ICountryListItem[];
}

要求の最初のパラメーターは、要求する SharePoint REST API エンドポイントです。 2 番目のパラメーターは、使用する構成です。 構成とは、以前に説明した HTTP 要求ヘッダーを設定することです。 完全なメタデータが必要な場合や、応答にメタデータがない場合など、既定の設定をオーバーライドする 3 番目の引数を渡すことができます。

get() および post() メソッドは、HTTP 応答ヘッダーや要求の状態コードを調べることができる JavaScript Promise を返します。 応答の本文に JSON が含まれている場合は、json() メソッドを呼び出すことができます。 これは、JSON オブジェクトとして変換されている解析済みの本文を含む Promise を返します。

概要

このユニットでは、SharePoint Framework API を使用して SharePoint REST API からリスト データを取得する方法について説明しました。