Visual Studioを使ってASP.NET WebAPI2を作成した際のメモ書き。
ASP.NET
「ASP.NET」とは、「Webフォーム」、「Webページ」、「シングルページアプリ」、「MVC」といった"サイト"を作成するフレームワークや、「WebAPI」や「SignalR」(WebSocketによる独自の通信方式)といった"サービス"を作成するフレームワークを提供してくれるものである。
WebAPIとは
「Web API」とは、ブラウザやデスクトップ・アプリケーションから、タブレットや携帯電話などのモバイル・デバイスまで、さまざまなクライアントにHTTPサービスを提供するためのフレームワークである。
Web APIの最大の特徴は、RESTfulなWebサービスを構築できる点にある。RESTfulなWebサービスとは、**REST(Representational State Transfer)**という原則に基づいたWebサービスのことで、以下のような特徴をもつ。
- リソースの場所はURLで表す
- リソースに対する操作はHTTPメソッドで表す
- リソースに対する操作の結果はHTTPステータスコードで表す
RESTfulなWebサービスが使用するデータ形式に特に指定はないが、JSON形式のデータを返すのが一般的である。
ASP.NETでのWebAPIの実装方法
実装方法は、http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api にとても明快に説明されている。当初は実装方法を説明しようと思っていたが、ただの上記サイトの和訳になりそうであったので、ここでは説明を省略する(汗)。
また、http://www.asp.net/web-api/overview/advanced/sending-html-form-data-part-1 を参考に、HTMLのformから値を取得するPOSTメソッドを実装してみたので、メモしておく。
formから値を受けとるようなPOSTメソッドを作成するには、下記のような適当なModelを用意し、Modelで用意した変数名とformで宣言するnameを揃えておく。
public enum TimeZone { Morning, Afternoon, Evening };
public class Greeting
{
public TimeZone TimeZone { get; set; }
}
そして、任意のControllerでPOSTメソッドを作成し、引数には先ほどのModelを設定しておく。
public class GreetingController : ApiController
{
// POST: api/greeting
[HttpPost]
public IHttpActionResult Post([FromBody]Greeting greeting)
{
}
}
このようにして、formから受け取った値をPOSTメソッドに受け渡すことができる。
GET、PUT、DELETEと明示的に区別するには、POSTメソッドに属性[HttpPost]を付加すればよい。また、POSTメソッドの引数に属性[FromBody]を付加していないと、formから値を取得できないので注意すること。