Open棟梁Project - マイクロソフト系技術情報 Wiki
RESTful な HTTP サービスを構築するためのフレームワーク。
既定では、以下のようにRoutingが定義されている。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
したがって、Web API のAction Methodを呼び出す際の URL は以下のようになる。
http://server/application/Controller/id
ASP.NET MVC と違い、Web API のRoute定義には、
(既定では)Action Method名の指定が無い。
Web API を使用した場合、リクエストの HTTP メソッドに応じて、
以下のようにControllerのAction Methodが自動的に呼び出される。
| 項番 | HTTP メソッド | 呼び出されるメソッド |
| 1 | GET | "Get" で始まる名前のメソッド |
| 2 | POST | "Post" で始まる名前のメソッド |
| 3 | PUT | "Put" で始まる名前のメソッド |
| 4 | DELETE | "Delete" で始まる名前のメソッド |
以下の様な定義を行えば、
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
デフォルトのHTTP Methodに対応したActionMethod?ではなく、
独自のActionMethod?名を明示することができる。
Web API を利用した場合のコントローラの例を以下に示す。
同じコントローラの中で GET に対応したメソッドを複数定義したい場合などは、
以下のようにオーバーロードで対応できる。
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
CORS (Cross-Origin Resource Sharing)に対応する場合にEnableCors?属性を指定する。
「HttpClientの類の使い方」を参考にできる。
ASP.NET Web API2からOWIN対応され、セルフホストが可能になっている。
Tags: :ASP.NET, :ASP.NET Web API