ASP.NET Web API の入門。 ASP.NET Web API を利用して RESTful web サービス を作成します。 ここでは、何も装飾的な処理を考えない、最も基本的な サービス の作成を目指します。
概要
今回は サンプル として、Catalog サービス を作成します。 具体的には「GET リクエスト で、商品名一覧を取得し、 POST リクエスト で、商品名を登録する」サービス を作ります。 あまり難しいことはせず、できる限り シンプル なものを作っていきます。
catalog.get
- HTTP リクエスト
[GET]
http://localhost:8080/api/catalog/
- パラメターなし。
- リクエスト ボディーなし。
- レスポンス商品名リスト。
catalog.post
- HTTP リクエスト
[POST]
http://localhost:8080/api/catalog/{id}
- パラメター
名前 型 説明 id number 商品ID - リクエスト ボディー商品名。
- レスポンス"success"文字列。
プロジェクト の作成
実装の観点からすると 「"ASP.NET Web API" は "ASP.NET MVC" とまったく異なるもの」 ですが、プロジェクトの作成は、 "ASP.NET MVC 4 Web アプリケーション" から作成します。
- [ファイル]-[新規作成]-[プロジェクト] を選択します。
- [インストールされたテンプレート] から [ // Visual C# / Web ] を選択し、
[ASP.NET MVC 4 Web アプリケーション] を選択します。
- [名前]、[場所]、[ソリューション名] を任意に変更します。
- [OK] を選択します。
- [空] の テンプレート を選択します。
- [OK] を選択します。
RESTful サービス の作成
ASP.NET Web API は MVC と多分に似ている作りになっていますが、異なる作りになっています。 具体的には、Web API は「名前空間が System.Net.Http に収められている」点、「デフォルト設定だと実行される アクション名 が HTTP メソッド名 と一致する」点等が ASP.NET MVC と異なります。
以下では、上記 概要 で説明したサービスをコーディングしていきます。
- "Controllers" ディレクトリ を右クリック、[追加]-[コントローラー] を選択します。
- 以下の設定を行い、[追加] を選択します。
ここでは サンプル として コントローラー名 を CatalogController としています。
- コントローラー名
- (任意の名称。慣例的に XxxxController。ここでは CatalogController)
- テンプレート
- 空の API コントローラー
- GET と POST を実行するよう、CatalogController.cs に以下の コード を記述します。
12345678910111213141516171819202122232425262728
namespace
WebApiApplication.Controllers
{
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Net;
using
System.Net.Http;
using
System.Web.Http;
public
class
CatalogController : ApiController
{
// GET api/catalog/
public
IEnumerable<
string
> Get()
{
// 商品一覧を取得する処理を記述...
return
new
string
[] {
"鉛筆"
,
"ボールペン"
,
"消しゴム"
};
}
// POST api/catalog/{id}
public
string
Post(
string
id, [FromBody]
string
product)
{
// 商品の登録処理を記述...
return
"success"
;
}
}
}
実装は以上です。 (かんたん!!)
ASP.NET Web API は、アクション の選択を HTTP メソッド に応じて自動的に選ぶようになっています。
なので、GET リクエスト
をした場合 Get() メソッド
が選択され、
POST リクエスト
をした場合 Post() メソッド
が選択されます。
テスト 実行
Fiddler を利用して 接続テスト を行います。
- Visual Studio で、作成した プロジェクト を デバッグ実行 します。 ※サンプル では ポート を 8080 で固定しています。
- Fiddler で [composer] タブ を選択します。
- メソッド、URI、Body を入力して [Execute] を選択します。
GET および POST の リクエスト サンプル を以下に載せます。
GET リクエスト
GET http://localhost:8080/api/catalog HTTP/1.1 User-Agent: Fiddler Host: localhost:8080 Connection: keep-alive
POST リクエスト
POST http://localhost:8080/api/catalog/123 HTTP/1.1 User-Agent: Fiddler Host: localhost:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 5 =hoge
- うまく アクセス できれば、
HTTP 200 OK
が返ってきます。
POST リクエスト では メッセージボディー に "=
" で始まる記載をすることに注意します。
"=
" がないと、いくらやっても null
になってしまします。
今回、以下のサイトを参考にしました。
- The Official Microsoft ASP.NET Site - Routing in ASP.NET Web API
- The Official Microsoft ASP.NET Site - Build RESTful API's with ASP.NET Web API
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!