では、どうぞ。それを行うための 2 つの方法を説明します。最も簡単な方法は次のとおりです。
1. ASP.NET ウェブ API
新しい ASP.NET MVC4 プロジェクト (リリースまたは RC) を作成し、オプションとして「WebApi」を選択する必要があります。
そして、テンプレートを準備します。'Controllers' フォルダを右クリックし、[追加] -> [コントローラ] を選択します。
次のように入力します。
public class ActualResourceController : ApiController
{
public string Get()
{
return "Hey there! Getting the resource...";
}
}
デフォルト ルートは Global.asax にありWebApiConfig.Register(...)
ます。メソッドの定義に移動すると、デフォルト ルートが であることがわかりますhost/api/controller
。プロジェクトを起動して下に移動すると(私の場合、ポートは開発サーバーによって自動的に選択されます) 、次のhttp://localhost:23030/api/ActualResource
ようになります。
<string>Hey there! Getting the resource...</string>
WebApi は、ヘッダーに応じて JSON または XML を返します。JSONAccept
を唯一のデフォルトにする場合は、このリンクを参照してください。
もちろん、クラスを作成して返すこともできます。クラスは、以下の ServiceStack と同様の方法で XML/JSON にシリアル化されます。
2.サービススタック
現在、ServiceStack は強力なオープンソースの REST Web サービス フレームワークです。WebApi とは動作が少し異なります。簡単に紹介します (ただし、ドキュメントは適切です)。
通常の ASP.NET MVC プロジェクト (私の場合は MVC4) を作成します。空のテンプレートが作成されます。
次に、パッケージ マネージャー コンソールを起動し、(ドキュメントが示唆するように) と入力しInstall-Package ServiceStack.Host.Mvc
ます。これにより、チュートリアル アプリを含む ServiceStack プロジェクト テンプレートが取得され、必要に応じて後で削除できます。
しかし、まず最初に、ServiceStack は DTO (Request-Response オブジェクト) で機能します。それでは、リクエストとして機能し、レスポンスとなるActualResource
クラスを作成しましょう。ActualResourceResponse
リクエストにはパラメーターがないため、最初のパラメーターは簡単です。
public class ActualResource
{
}
パラメータはすべて自動プロパティになります。今応答:
public class ActualResourceResponse
{
public string ResourceName { get; set; }
}
そしてサービスクラス自体:
public class ActualResourceService : Service
{
public object Get(ActualResource request)
{
return new ActualResourceResponse {
ResourceName = "Hi! It's the resource name." };
}
}
string
もちろん、現在の目的のために裸に戻すこともできますが、それはまったく同じように機能します。
ServiceStack が作成するテンプレートでは、すべてが AppHost.cs ファイルで行われます。これを見て、少し変更してみましょう。
Routes
.Add<Hello>("/hello")
.Add<Hello>("/hello/{Name*}")
.Add<Todo>("/todos")
.Add<Todo>("/todos/{Id}") //everything up to here are a template/tutorial routes, you can safely remove them
.Add<ActualResource>("/actualResource"); //and here you add a route to your own service
WebApiConfig.Register(GlobalConfiguration.Configuration)
これを機能させるには、Global.asax に移動して行全体をコメントアウトし、RouteConfig.RegisterRoutes
メソッドに移動して次を追加する必要があります。
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("api/{*pathInfo}"); // <<<---- this line
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
もう少し配管が必要ですが、それでも悪くありません。
サービスを開始すると、 の下に移動するlocalhost:whateverport/api/actualResource
と、おなじみの文字列が表示されます。これがスクリーンショットです。
ServiceStack はさまざまな形式にシリアル化できるため、 の下http://localhost:yourPort/api/actualResource?format=json
に移動すると、次のようになります。
{"resourceName":"Hi! It's the resource name."}
の場合?format=xml
:
<ActualResourceResponse>
<ResourceName>Hi! It's the resource name.</ResourceName>
</ActualResourceResponse>
等々...
現在、ServiceStack のセットアップはもう少し複雑ですが、Memcache などをすぐにサポートし、Redis で plumb でき、さまざまな認証プロバイダーを使用できます。これらはすべて、シナリオによっては非常に役立つ場合があります。しかし、ベンおじさんがかつて言ったように、「大きな力には大きな責任が伴います」、そして少し難しいセットアップ段階...
好きな方を選択できるようになりました。現時点では、これらの 2 つは最も単純なオプションです。もちろん、これは開始するための簡単なチュートリアルにすぎません。プロジェクトを開始するときに、このトピックを詳しく調べる機会があります。