「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。 目次 †概要 †
基本 †ルーティング †WebApiConfigで一括定義する。 †Attributeを付与して個別定義する。 †参考 †
JSON †以下が参考になる。 JSONを送信するRESTサービスを作成する方法 †JSONを受信するJSON-RPCサービスを作成する方法 †認証 †OAuth 2.0、OpenID Connectを使用する。 以下が参考になる。 WebAPIの認証 †ASP.NET IdentityのOAuth2によるSTS実装 †リクエスト送信方法 †以下が参考になる。 HttpClientの類の使い方 †WebApiConfig?の例 †/// <summary>MultiPurposeAuthSite.App_Start</summary> namespace MultiPurposeAuthSite.App_Start { /// <summary>WebApi定義(テンプレート)</summary> public static class WebApiConfig { /// <summary>Register</summary> /// <param name="config">HttpConfiguration</param> public static void Register(HttpConfiguration config) { // Web API configuration and services // 「Bearer Token」認証のみを使用するように、Web API を設定。 config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); // JSON データにはCamelCaseを使用 (JSON.NET) config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // CORS (Cross-Origin Resource Sharing)の有効化 // 別ドメイン上で動作する Web アプリからアクセス可能に設定。 config.EnableCors(); // Web API routes を設定する。 // Attribute Routing config.MapHttpAttributeRoutes(); // MapHttpRoute config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } } } Routing †MapHttpRoute? †
MapHttpAttributeRoutes? †
CORS †
認証 †Web API の認証は、OAuth 2.0のBearer Tokenを使用するのが一般的になりつつある。 // Web API configuration and services // 「Bearer Token」認証のみを使用するように、Web API を設定。 config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 参考 †
ApiController?の例 †基本 †Web API を利用した場合のコントローラの例を以下に示す。 同じコントローラの中で、 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) { } } バインディング †基本的に、モデル・バインディングを使用する。 モデル・バインディング †モデル・バインディングは、以下のように実装できる。 「.\SPA_Sample\Models\WebApiParams?」を使用してModelBinding?している。 その他のバインディング †モデル・バインディングを使用しない方法。
CORS †CORS (Cross-Origin Resource Sharing)に対応する場合、 EnableCors?属性 †前述の、WebApiConfigでのCORSの有効化を行った後に、 /// <summary>OAuthResourceServerのApiController(ライブラリ)</summary> [Authorize] [EnableCors( // リソースへのアクセスを許可されている発生元 origins: "*", // リソースによってサポートされているヘッダー headers: "*", // リソースによってサポートされているメソッド methods: "*", // SupportsCredentials = true)] public class OAuthResourceApiController : ApiController { 認証CookieをCORSで送信 †以下が参考になるが、
最近のOAuth 2.0 や OpenID Connect等では 参考 †
その他 †ActionFilterAttribute? †前後処理の実装に、MVCのようにベースクラスが使用できなくなったため、
参考 †
OWIN †ASP.NET Web API2からOWIN対応され、セルフホストが可能になっている。 参考 †
参考 †ファースト・ステップ †
@IT †
Qiita †
miso_soup3 Blog †
Tags: :.NET開発, :通信技術, :OWIN, :.NET Core, :ASP.NET, :ASP.NET Web API |