C#
 Computer >> コンピューター >  >> プログラミング >> C#

ASP.NET Web APIはweb.configファイルで構成できる?コードベース構成の正しい方法を解説

結論:Web APIはweb.configファイルでは構成できません

いいえ、ASP.NET Web APIはweb.configファイルでは構成できません。Web APIがサポートしているのはコードベースの構成(code-based configuration)であり、web.configファイルによる設定には対応していません。

Web APIでは、ホスティングインフラストラクチャや各種コンポーネントの動作をカスタマイズするために、以下の項目をコード上で構成します。

  • ルート(Routes)
  • フォーマッター(Formatters)
  • フィルター(Filters)
  • 依存関係リゾルバー(Dependency Resolver)
  • メッセージハンドラー(Message Handlers)
  • パラメーターバインディングルール(ParameterBindingRules)
  • プロパティ(Properties)
  • サービス(Services)

主要コンポーネントの詳細

ルート(Routes)

コントローラーのpublicメソッドは「アクションメソッド」または単に「アクション」と呼ばれます。Web APIフレームワークがリクエストを受け取ると、そのリクエストを適切なアクションへルーティングします。どのアクションを呼び出すかを判断するために、フレームワークはルーティングテーブルを使用します。

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

フォーマッター(Formatters)

ASP.NET Core MVCでは、入力フォーマッターと出力フォーマッターを使ってWeb APIにおけるデータ交換をサポートしています。入力フォーマッターはモデルバインディングに使用され、出力フォーマッターはレスポンスの整形に使用されます。

組み込みのフォーマッターが対応していないコンテンツタイプを扱いたい場合は、カスタムフォーマッターを作成して追加することで対応できます。

フィルター(Filters)

フィルターは、ログ記録、例外処理、パフォーマンス測定、認証・認可といった横断的な関心事(クロスカッティング機能)を実装するために活用できます。

依存関係リゾルバー(Dependency Resolver)

Web APIは、依存関係を解決するためのIDependencyResolverインターフェースを定義しています。これにより、DIコンテナとの連携が可能になります。

メッセージハンドラー(Message Handlers)

メッセージハンドラーは、受信したリクエストがHttpControllerDispatcherに到達する前に、処理・編集・拒否を行う仕組みを提供します。

パラメーターバインディングルール(ParameterBindingRules)

Web APIがコントローラーのメソッドを呼び出す際には、パラメーターに値を設定する必要があります。この一連のプロセスは「バインディング」と呼ばれます。

  1. C# ASP.NET WebAPIでCORSの問題を解決する方法を徹底解説

    CORS(クロスオリジンリソースシェアリング)とはクロスオリジンリソースシェアリング(Cross-Origin Resource Sharing:CORS)は、追加のHTTPヘッダーを使用して、あるオリジンで動作しているWebアプリケーションに対し、別のオリジンにある選択されたリソースへのアクセスを許可するようブラウザに指示する仕組みです。Webアプリケーションは、自身とは異なるオリジン(ドメイン、プロトコル、ポート)のリソースを要求する際に、クロスオリジンHTTPリクエストを実行します。例として、フロントエンド(UI)とバックエンド(サービス)を持つアプリケーションを考えてみましょう。フロン

  2. C# ASP.NET Web APIのアクションメソッドからカスタム結果タイプを返す方法

    ASP.NET Web APIでは、IHttpActionResultインターフェースを実装することで、独自のカスタムクラスを結果タイプとして作成できます。IHttpActionResultインターフェースには、HttpResponseMessageインスタンスを非同期に生成する単一のメソッド ExecuteAsync が定義されています。public interface IHttpActionResult { Task<HttpResponseMessage> ExecuteAsync( CancellationToken cancellationToke