Sharepoint-rest-apis
この章では、REST APIについて説明します。 これは、型を含むライブラリのセットがあり、それらの型にはプロパティとメソッドが含まれる従来のAPIではありません。
REST APIは、Open Data ProtocolまたはODataに基づくデータ中心のWebサービスとして実装されます。 これらのWebサービスが機能し、システム内の各リソースを使用する方法は、サーバーに渡す特定のURLによってアドレス指定できます。
SharePointサイトが開いているInternet Explorerでこれを見てみましょう。
- ステップ1 *-Internet Explorerを使用している場合、Internet Explorerの設定に移動し、[コンテンツ]タブで、下のスクリーンショットに示すように、フィードとWebスライスの設定を選択します。
次のダイアログボックスが表示されます。 [フィード閲覧ビュー]が[オフ]になっていることを確認し、[OK]をクリックします。
- ステップ2 *-次に、URLをサイトURL+/_ api/webに変更し、Enterキーを押します。
次のスクリーンショットのようなビューが表示されます。
現在のWebまたは現在のサイトに関する情報が必要です。 したがって、サイトURL+/_ apiはSharePoint 2013 REST APIのベースURLであり、webはクエリです。 現在のウェブに関する情報が必要です。
XMLドキュメントを取得し、下にスクロールすると、現在のWebに関する情報を取得します。
次に、Webのリストについて知りたい場合は、リストをURLに追加できます。 個々のオブジェクトに関する情報の代わりに、現在のサイトのすべてのリストに関する情報のコレクションを取得します。
ブラウザーを使用していたとき、サーバーにget要求を発行していました。つまり、情報を取得したいということです。 ただし、残りの標準CRUD操作も実行できます。
REST APIを使用してリソースを取得する
SharePoint 2013 REST APIはメタデータを公開しません。 したがって、マネージコードで操作している場合、Visual Studioを使用して、サービス参照ダイアログを使用してサービスプロキシを生成することはできません。 代わりに、http Web要求オブジェクトのWebクライアントのようなタイプを使用して、サーバーに要求を送信し、生の結果を取得することができます。
これらの結果がXMLとして返されるかJSONとして返されるかは、リクエストとともに送信するacceptヘッダーによって決まります。
- XMLを取得したら、LINQ to XMLを使用して、アプリケーションに必要な応答から情報を取得できます。
- JSONを取得したら、さまざまなJSONシリアル化のいずれかを使用してJSONを.NETオブジェクトに解析し、それを使用して必要な情報を取得できます。
JavaScriptでREST APIを使用する場合、jQueryまたはSP.RequestExecutorオブジェクトを使用して、サービスを呼び出すことができます。 マネージコードの例のように、acceptヘッダーを使用してXMLまたはJSONのどちらを取得するかを制御できます。 ほとんどの場合JavaScriptで作業しているため、JSONを取得したいと考えています。
もう1つ注意すべきことは、サービスのURLを作成するとき、 _ spPageContextInfo オブジェクトを使用してサイトから絶対URLを取得し、サービスURLとクエリを追加するだけです。 これは、REST APIサービスがメタデータを公開せず、Visual Studioでサービス参照を作成できないためです。マネージコードでREST APIを使用することは、実際には非スターターです。
新しいプロジェクトを作成して、JavaScriptからREST APIを呼び出す方法を見てみましょう。
ステップ1 *-中央のペインで[ *App for SharePoint ]を選択し、プロジェクトの名前を入力します。 OK をクリックしてください。
ステップ2 *-サイトのURLを入力し、 SharePoint –ホスト*オプションを選択して、[次へ]をクリックします。 完了をクリックします。
- ステップ3 *-プロジェクトが作成されたら、ソリューションエクスプローラーの[ページ]の下にあるDefault.aspxページを開き、1つのボタンを追加します。
Default.aspxファイルの完全な実装を次に示します。
<%-- The following 4 lines are ASP.NET directives needed when using SharePoint
components --%>
<%@ Page Inherits = ”Microsoft.SharePoint.WebPartPages.WebPartPage,
Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
PublicKeyToken = 71e9bce111e9429c” MasterPageFile = ”~masterurl/default.master”
Language = ”C#” %>
<%@ Register TagPrefix = ”Utilities” Namespace = ”Microsoft.SharePoint.Utilities”
Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
PublicKeyToken = 71e9bce111e9429c” %>
<%@ Register TagPrefix = ”WebPartPages”
Namespace = ”Microsoft.SharePoint.WebPartPages” Assembly = ”Microsoft.SharePoint,
Version = 15.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c” %>
<%@ Register TagPrefix = ”SharePoint” Namespace = ”Microsoft.SharePoint.WebControls”
Assembly = ”Microsoft.SharePoint, Version = 15.0.0.0, Culture = neutral,
PublicKeyToken = 71e9bce111e9429c” %>
<%-- The markup and script in the following Content element will be placed in
the <head> of the page --%>
<asp:Content ContentPlaceHolderID = ”PlaceHolderAdditionalPageHead”
runat = ”server”>
<script type = ”text/javascript” src = ”../Scripts/jquery-1.9.1.min.js”></script>
<SharePoint:ScriptLink name = ”sp.js” runat = ”server” OnDemand = ”true”
LoadAfterUI = ”true” Localizable = ”false”/>
<meta name = ”WebPartPageExpansion” content = ”full”/>
<!–Add your CSS styles to the following file ->
<link rel = ”Stylesheet” type = ”text/css” href = ”../Content/App.css”/>
<!–Add your JavaScript to the following file ->
<script type = ”text/javascript” src = ”../Scripts/App.js”></script>
</asp:Content>
<%-- The markup in the following Content element will be placed in the TitleArea
of the page --%>
<asp:Content ContentPlaceHolderID = ”PlaceHolderPageTitleInTitleArea”
runat = ”server”>
Page Title
</asp:Content>
<%-- The markup and script in the following Content element will be placed in
the <body> of the page --%>
<asp:Content ContentPlaceHolderID = ”PlaceHolderMain” runat = ”server”>
<div>
<p id = ”message”>
<!–The following content will be replaced with the user name when
you run the app – see App.js -> initializing…
</p>
<input id = ”loadButton” type = ”button” value = ”Load”/>
</div>
</asp:Content>
- ステップ4 *-ソリューションエクスプローラーのスクリプトの下にあるApp.jsファイルを開き、次のコードに置き換えます。
JQuery(document).ready(function () {
JQuery("#loadButton").click(usingLoad)
});
function usingLoad() {
var context = SP.ClientContext.get_current();
var web = context.get_web();
context.load(web);
context.executeQueryAsync(success, fail);
function success() {
var message = jQuery("#message");
message.text(web.get_title());
message.append("<br/>");
message.append(lists.get_count());
}
function fail(sender, args) {
alert("Call failed. Error: " + args.get_message());
}
}
jQueryを使用して document.ready 関数を作成しています。 ここでは、クリックイベントハンドラーをボタンにアタッチするだけです。 したがって、セレクターを使用して loadButton を取得し、 Load を使用してクリックイベントハンドラーを追加しました。
したがって、ボタンをクリックすると、マネージバージョンのデモで行ったのと同じことを行い、Webのタイトルを表示したいと思います。
- ステップ5 *-アプリケーションを公開すると、次のファイルが表示されます-
- ステップ6 *-このファイルをSharePointサイトアプリページにドラッグします。
リストに JavaScriptDemo ファイルが表示されます。
ステップ7 *-左ペインの[サイトコンテンツ]をクリックし、[アプリの追加]を選択します。 *JavaScriptDemo アイコンをクリックします。
- ステップ8 *-[信頼する]をクリックします。
- ステップ9 *-アプリが表示されます。 アプリのアイコンをクリックします。
- ステップ10 *-[ロード]ボタンをクリックすると、テキストが更新されます。
更新されたテキストを見ることができます。