====== Java consuming SharePoint REST API ======
SharePoint2016オンプレ環境のREST APIと連携するJava Clientの実装例を紹介します。
{{keywords>consuming REST client}}
====== SharePoint RESTサービスの概要 ======
%%SharePoint%% 2016ではREST(REpresentational State Transfer)サービスを導入しています。\\
これにより開発者は、標準のREST Web要求をサポートするテクノロジを使用して%%SharePoint%%データとリモートで対話できるようになました。\\
つまり、クライアントアプリケーションからREST Webテクノロジと標準のOData(Open Data Protocol)構文を使用して、CRUD操作が実行できるようになりました。
====== SharePoint RESTサービスエンドポイントを決定する ======
%%SharePoint%% リソース用のRESTエンドポイントを作成するには、次の手順に従います。
1. REST サービスの参照から始めます。
http:///_api
2. 適切なエントリポイントを指定します。 次にその例を示します。
http:///_api/web
3. エントリポイントから、アクセスする特定のリソースに移動します。\\
これには、クライアントオブジェクトモデルのメソッドに対応するエンドポイントのパラメータの指定が含まれます。\\
次にその例を示します。
http:///_api/web/lists/getbytitle('listname')
====== client.svcサービスの直接参照の代わりに_apiを使用する ======
%%SharePoint%% REST サービスのアーキテクチャ((アーキテクチャはこちらを参考してください。[[https://docs.microsoft.com/ja-jp/sharepoint/dev/sp-add-ins/get-to-know-the-sharepoint-rest-service|SharePoint REST サービスのアーキテクチャ]]))を見ると分かりますが、client.svcがREST サービスへの参照するURIを認識し受け入れます。\\
たとえば、%%http:///_vti_bin/client.svc/web/lists%% でアクセスできます。\\
しかし、これに加え、後に説明するパラメーターが入ってくるとURLが長くなり、URL制限の256文字に引っかかります。\\
これを回避するために、_apiを使用してclient.svc web サービスを明示的に参照する必要性を取り除きます。\\
_apiを使用することで、URLを短縮し、残り部分を構築するために使用できる文字数を増やすことができます。
====== REST エンドポイント URIでパラメータを指定する ======
%%SharePoint%%ではOData仕様が拡張されており、かっこ()を使用してメソッドのパラメーターとインデックスの値を指定することができます。\\
複数のパラメーターを指定するには、次のように、名前と値をペアにしたパラメーターを指定し、各パラメーターをコンマで区切ります。
http:///_api/web/getAvailableWebTemplates(lcid=1033, includeCrossLanguage=true)
====== context infoへのHTTP要求例 ======
form digest value((REST APIを利用してサイトにオブジェクトを生成するためには、