ASP.NET 4.5で実装されたフレームワークには、RESTfulなHTTPサービスを構築できる「ASP.NET Web API」が含まれています。ここでは、このフレームワークの特徴を、実際のコードとともにご紹介します。
HTTPの仕様に準じたフレームワーク
ASP.NET Web APIは、Web標準――URI、HTTPに準じたHTTPサービスを構築するためのフレームワークです。公開されたAPIはHTTP通信で利用できるため、PCブラウザ(JavaScript)・iOS・Android・タブレット等、多種多様なクライアントとともにアプリケーションを提供することができます。
実装の中心:エンドポイントの定義
まずは、APIの実装の中心となる場所、エンドポイントをご覧ください。
ASP.NET Web APIでは、リスト1のように定義します。
リスト1 顧客APIのエンドポイント
public class CustomerController : ApiController
{
// GET api/customer
public IEnumerable GetAll()
{
// すべてのCustomerを返す処理
throw new NotImplementedException();
}
// GET api/customer/5
public Customer GetCustomerById(int id)
{
// Idと一致するCustomerを返す処理
throw new NotImplementedException();
}
// POST api/customer
public void PostCustomer(Customer newCustomer)
{
// 新しくCustomerを作成する処理
throw new NotImplementedException();
}
}
ASP.NET MVCから登場したモデルバインダによる検証の機能は、ASP.NET Web APIでも有効です。検証を有効にするには、DataAnnotationsの検証属性を付与することで、ModelStateオブジェクトから検証結果を参照することができます。
リスト4 検証属性を付与したCustomerクラス
public class Customer
{
public int Id { get; set; }
[Required(ErrorMessage = "{0} は必須項目です")]
[StringLength(50, MinimumLength = 6)]
public string Name { get; set; }
public string Address { get; set; }
[Range(1, 10)]
public int Point { get; set; }
}
ASP.NET Web APIは、クライアントから要求されるメディアタイプに対応できるよう、拡張ポイントが用意されています。デフォルトでは、application/json、application/xml、application/x-www-form-urlencodedの3つに対応しているので、それら以外に対応する必要がない場合は特に手を加える必要はありません。