ここでは、 ASP.NET Web API において、独自フィルター を実装する方法を掲載します。 独自フィルター を実装することで、 RESTful アプリケーション内において、ある決まった処理を簡単に実装することができるようになります。 今回は サンプル として「フィルターを実装したアクション(メソッド)のレスポンスをキャッシュさせない」独自フィルターを作成します。
目次
独自フィルター の 実装手順
- 独自フィルター 用 の クラス を追加すます。
ここでは、Filter フォルダー を作成した後、 右クリック-[追加]-[新しい項目] を選択します。
- [コードファイル] を選択し、 NoCacheFilterAttribute を作成します。
System.Web.Http.Filters.ActionFilterAttribute
を継承します。1public
class
NoCacheFilterAttribute : System.Web.Http.Filters.ActionFilterAttribute
.OnActionExecuting
メソッド を オーバーライドします。1234public
override
void
OnActionExecuting (HttpActionContext actionContext)
{
base
.OnActionExecuting(actionContext);
}
.OnActionExecuted
メソッド を オーバーライドします。1234public
override
void
OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base
.OnActionExecuted(actionExecutedContext);
}
独自フィルター の 実装例
NoCacheFilterAttribute.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | using System.Net.Http.Headers; using System.Web.Http.Controllers; using System.Web.Http.Filters; /// <summary> /// キャッシュ無効化するフィルター属性 /// </summary> public class NoCacheFilterAttribute : ActionFilterAttribute { /// <summary> /// アクション メソッドの呼び出し前に発生します。 /// </summary> /// <param name="actionContext">アクション実行コンテキスト。</param> public override void OnActionExecuting(HttpActionContext actionContext) { base .OnActionExecuting(actionContext); } /// <summary> /// アクション メソッドの呼び出し後に発生します。 /// </summary> /// <param name="actionExecutedContext">アクション実行コンテキスト。</param> public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { var response = actionExecutedContext.Response; response.Headers.CacheControl = new CacheControlHeaderValue() { NoCache = true }; base .OnActionExecuted(actionExecutedContext); } } |
独自フィルター の 利用
CatalogController.cs
1 2 3 4 5 6 7 8 9 10 11 | public class CatalogController : ApiController { // GET api/catalog/ [NoCacheFilter] public IEnumerable< string > Get() { // 商品一覧を取得する処理を記述... return new string [] { "鉛筆" , "ボールペン" , "消しゴム" }; } } |
今回、以下のサイトを参考にしました。
- waりとnaはてな日記 - ASP.NET MVC4 の Web API を学んでみる その4 ~Filter編
- 松崎 剛 Blog - Web API における操作ごとの制御 (Validation, 認証/権限, Exception 処理 など)
- stackoverflow - ASP.NET Web API ActionFilter example
- MSDN - System.Web.Http.Filters 名前空間
- MSDN - ActionFilterAttribute クラス
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!