---
title: "エンティティサービスのRESTful APIの使用"
slug: "using-the-restful-api-for-the-entityservice"
abstract: "RESTful APIを使ってエンティティとどのように連携するかを説明します。"
---
# エンティティサービスのRESTful APIの使用

EntityServiceを使ってサーバー上でカスタムコントローラークラスを作成します。これらのクラスはHTTP経由でアクセス可能です。

Sitecore.Services.Infrastructure.Web.Http.DefaultRouteMapperこれらのカスタムコントローラークラスにアクセスするためのデフォルトルートを提供します。このルートとWeb API用の [カスタムコントローラーセレクター](http://msdn.microsoft.com/en-us/library/system.web.http.dispatcher.ihttpcontrollerselector.aspx) は、ウェブサイトのアプリケーション起動時に設定されます。

## デフォルトルーティング

EntityServiceとして機能するカスタムコントローラークラスは、一意なURLを通じてアドレス指定可能でなければなりません。この要件を満たすには、対象となるカスタムコントローラークラスの完全修飾型名からURLを導出します。

EntityServiceクラスに適用されるルート定義は以下の通りです:

{namespace}/{controller}/{id}/{action}

ここで:

-   IDはオプションのパラメータです。
-   アクションはコントローラーで呼び出したいメソッドの名前です。

### HTTP動詞のマッピング

すべてのEntityServiceエンドポイントは以下のHTTP動詞に応答します:

-   GET – EntityServiceのFetchEntityメソッド(idパラメータが提供されている場合)またはFetchEntitiesメソッド(idパラメータが提供されていない場合)にマッピングされます。
-   POST – EntityServiceのCreateEntityメソッドにマッピングします。
-   PUT – EntityServiceのUpdateEntityメソッドにマッピングされます。
-   DELETE – EntityServiceのDeleteメソッドにマッピングされます。
-   OPTIONS – エンティティサービスのメタデータメソッドにマッピングします。

### タイプ名をURLにマッピングする

Sitecore.Services.Clientコントローラクラスのフル型名を使い、受信するHTTPリクエストをデフォルトでEntityServiceエンドポイントにマッピングします。

このプロセスの鍵となる2つのルートパラメータは{namespace}と{controller}です。ルート定義の非選択的な部分は以下の通りです:

{namespace}/{controller}

ここで:

-   {namespace}はクラス名の名前空間から派生し、「.」文字を「-」に変換しています。文字。
-   {controller}は、 Controller の接尾辞なしのクラス名です。これはコントローラ命名のMVCの慣例に従います。

例えば、My.Namespace.ProductController限定型名はmy-namespace/product URLに対応します。

### カスタムコントローラーアクションルーティング

EntityServiceコントローラークラスにカスタムアクションメソッドを追加できます。 Sitecore.Services.ClientリクエストのURLに{id}および{action}パラメータを指定すると、自動的に適切なアクションメソッドにルーティングされます。

これは {namespace}/{controller}/{id}/{action} ルートを使用します。デフォルトのルーティング構成では、{id} パラメータ({namespace}/{controller}/{action} ルート)を提供しないリクエストはサポートしていません。

## 構成

Sitecore.Services.Client.config includeファイルには以下の設定オプションが含まれています:

**舞台設定**

**概要**

Sitecore。サービス。ルートマッパー

Sitecore。Services.RouteMapperの設定は、Sitecoreを指定します。Services.Infrastructure.Web.Http.IMapRoutes の派生型は、 Sitecore.Services.Clientのルートを設定するものです。  
  
この設定のデフォルト値は Sitecore.Services.Infrastructure.Web.Http.DefaultRouteMapper、 Sitecore.Services.Infrastructureです。

## サービスエンドポイントステム

すべてのEntityServiceコントローラーは単一のURLの下に設置されています: Sitecore/api/ssc/。

## 名前空間のルーティングオーバーライド

ServicesControllerAttributeクラスはUniqueNameパラメータを取るコンストラクタを提供します。UniqueNameパラメータを使って{namespace}と{controller}のルーティングデータ値を明示的に指定します。この方法でデフォルトの「名前をURLにタイプする」メカニズムを上書きできます。

以下の例は、UniqueNameパラメータ値がコントローラーにアクセスするURLにどのようにマッピングされるかを示しています。

**ユニークネーム**

**URL**

product

product

company.product

company.product

company/product

company.product

long.company.product

long-company/product

long/company/product

long-company/product

long.company/product

long-company/product

{namespace}と{controller}の両方の部分を提供しない一意名は{namespace}/{controller}/{action}ルートで処理されず、HTTP 404応答を生成することがあります。

ルーティングの概要については、「 [ASP.NET Web APIのルーティング」](http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api)を参照してください。