ホームページ バックエンド開発 C#.Net チュートリアル ASP.Net Core の WebApi のいくつかのバージョンの詳細な比較 (画像)

ASP.Net Core の WebApi のいくつかのバージョンの詳細な比較 (画像)

Sep 25, 2017 am 11:10 AM
asp.net core webapi

この記事は主に、ASP.Net Core WebApi のいくつかのバージョン管理の比較に関する簡単な説明を紹介しています。編集者はそれが非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう

1. バージョン管理の利点:

(1) 既存のシステムに損傷を与えることなく、機能をタイムリーに起動するのに役立ちます。

(2) 選択した顧客に追加機能を提供するのにも役立ちます。

API のバージョン管理は、次のようなさまざまな方法で制御できます:

(1) URL またはクエリ文字列パラメータとしてバージョンを追加します。

(2) カスタム ヘッダーおよび accept ヘッダーを介して

この記事では、複数のバージョンの ASP.NET Core Web API をサポートする方法を見てみましょう。

1. asp.net core webapi プロジェクトを作成し、NuGet パッケージを参照します: Install-Package Microsoft.AspNetCore.Mvc.Versioning -Version 2.0.0

プロジェクトとインストール パッケージの準備ができました。次に、Startup.cs の ConfigureServices メソッドに次のコードを追加する必要があります:

ご覧のとおり、3 つの異なるオプションが構成されています。

  • ReportAPIVersions: これはオプションです。ただし、true に設定すると、API はサポートされているバージョン情報を応答ヘッダーで返します。

  • AssumeDefaultVersionWhenUnspecified: このオプションは、バージョンを提供しないリクエストに使用されます。デフォルトでは、想定される API バージョンは 1.0 です。

  • DefaultApiVersion: このオプションは、リクエストでバージョンが指定されていない場合に使用するデフォルトの API バージョンを指定するために使用されます。これはデフォルトでバージョン 1.0 になります。

これで構成と設定はすべて完了です。次に、API バージョンにアクセスするさまざまな方法を見ていきます。

2. QueryString を使用してバージョン管理を実装します。

次のコードに示すように、コントローラーを開き、それに ApiVersion 機能を追加します。

上記のコードはバージョン 1.0 とみなされます。別の名前空間に同じ名前の別のコントローラー クラスを作成し、API バージョンをバージョン 2.0 に設定することもできます。下の写真に示すように:

以上です。次に、ブラウザに移動してコントローラーにアクセスします。デフォルトに設定されている API バージョン 1.0 コントローラーからの出力が表示されるはずです。 URL に api-version=2 を追加すると、API バージョン 2.0 コントローラーの出力が表示されるはずです。

2. URL パスセグメントを介して実装:

クエリ文字列パラメータは便利ですが、長い URL やその他のクエリ文字列パラメータの場合は苦痛になる可能性があります。代わりに、URL パスにバージョンを追加する方が良い方法です。例:

  • api/v1/values

  • api/v2/values

これはまだ上記のプロジェクトですが、次のコードを v1 と v2 コントローラーに追加する必要があります。以下に示すように:

同様に、該当するすべての場所に対してルーティング パラメーターを更新する必要があります。この変更により、API インターフェースにアクセスする際には常にバージョン番号が必要になります。 URL 内のバージョン番号を変更することで、api/v1/values を通じてバージョン 1.0 にアクセスし、api/v2/values を通じてバージョン 2.0 にアクセスできます。シンプルで見た目もすっきり。

テスト結果は次のとおりです:

3. HTTPヘッダーを介してバージョン管理を実装します

上記の2つの方法では、バージョン管理をサポートするためにURLを変更する必要があります。ただし、API の URL をクリーンなままにしたい場合は、HTTP ヘッダーを追加して API バージョン情報を渡すこともできます。これを機能させるには、ApiVersionReader オプションを構成する必要があります。コードは次のとおりです:

強調表示された行は、ヘッダー「api-version」が API バージョン番号の予想される場所であることを示しています。ルートのプロパティにバージョンの詳細が含まれていないことを確認してください。テストした結果は次のとおりです。

「API version」の値として 2.0 を指定すると、バージョン 2.0 コントローラーが呼び出され、出力が返されます。

シンプルでセットアップが簡単。ただし、バージョン管理のためのクエリ文字列パラメーター メソッドは機能しなくなりました。ヘッダーを設定すると、クエリ文字列パラメータを指定できなくなります。両方のケースをサポートしたい場合は、HeaderApiVersionReader の代わりに QueryStringOrHeaderApiVersionReader を使用します。コードは次のとおりです:

したがって、クエリ文字列パラメータとヘッダーがサポートされるようになりました。デフォルトのクエリ文字列パラメーター名は api-version であるため、コンストラクターを空のままにすることができますが、別の名前が必要な場合は、それを指定する必要があります。クエリ文字列パラメータとヘッダーに別の名前を使用することもできます。 ReportApiVersions も true に設定していることに注意してください。これにより、応答ヘッダーでバージョン情報が返されます。以下を参照してください。

それでは、さらにいくつかのオプションを見てみましょう。

MapToApiVersion パラメーターの使用法:

MapToApiVersion プロパティを使用すると、単一の API 操作を任意のバージョンにマッピングできます。つまり、1 つのコントローラーで複数のバージョンをサポートします。コントローラーには、バージョン 3 でサポートされる API アクション メソッドのみが含まれる場合があります。この場合、MapToApiVersion を使用できます。以下のコードを見てください。

上記のコードの意味は、パブリック文字列 Get() メソッドはバージョン 1.0 でのみサポートされ、パブリック文字列 Getv3() メソッドはバージョン 3.0 でのみサポートされることです。

写真と実際の画像があり、非常に柔軟で、とても気に入りました。

非推奨パラメータの使用法:

複数の API バージョンをサポートする場合、一部のバージョンは時間の経過とともに最終的に非推奨になります。 1 つ以上の API バージョンを非推奨としてマークするには、コントローラーを非推奨として修飾するだけです。これは、API バージョンがサポートされていないという意味ではありません。まだそのバージョンを呼び出すことができます。これは、以下のバージョンが将来非推奨になることを API 呼び出しユーザーに認識させるための単なる方法です。

上記の Deprecated を TRUE に設定すると、バージョン 1.0 が将来非推奨になることを意味します。 API インターフェースにアクセスすると、以下の図に示すように、応答ヘッダーに次の情報が表示されます。

ApiVersionNeutral 属性の使用法:

ApiVersionNeutral 属性は、この API がバージョン管理をサポートしなくなったことを定義します。これは、API のバージョン管理をサポートしているか、API のバージョン管理をサポートしていないレガシー API をサポートしているかに関係なく、まったく同じように動作する API に役立ちます。したがって、ApiVersionNeutral プロパティを追加してバージョン管理を終了できます。

バージョン情報を取得する

アクセスされているクライアントのバージョンを知りたい場合は、次のコードを通じてこの関数を実装できます:

要約すると、複数のバージョン管理された API がロールロールに役立ちます。機能を効率的に強化しながら、変更の追跡も容易にします。この記事では、ASP.NET coreWEB API で複数のバージョンのサポートを追加する方法について説明しました。 nuget パッケージは、クエリ文字列パラメーターによるバージョン管理、URL およびヘッダーによるパス セグメントの追加をサポートしています。また、バージョン単一の API 操作とバージョンをオプトアウトする機能も備えています。

サードパーティのパッケージに頼らずに API のバージョン管理を実装することは可能ですか? 早速、読み進めてみましょう。

4. Ultimate バージョン (NuGet パッケージなし) asp.net core Web API バージョン コントロール

新しいコア API プロジェクトを作成します:

VersionControl フォルダーの下に、IApplicationModelConvention インターフェイスを実装する新しいクラス NameSpaceVersionRoutingConvention を作成します。 コードは次のとおりです。


public class NameSpaceVersionRoutingConvention:IApplicationModelConvention
  {
    private readonly string apiPrefix;
    private const string urlTemplate = "{0}/{1}/{2}";
    public NameSpaceVersionRoutingConvention(string apiPrefix = "api")
    {
      this.apiPrefix = apiPrefix;
    }

    public void Apply(ApplicationModel application)
    {
      foreach (var controller in application.Controllers)
      {
        
        var hasRouteAttribute = controller.Selectors
        .Any(x => x.AttributeRouteModel != null);
        if (!hasRouteAttribute)
        {
          continue;
        }
        var nameSpaces = controller.ControllerType.Namespace.Split('.');
        //获取namespace中版本号部分
        var version = nameSpaces.FirstOrDefault(x => Regex.IsMatch(x, @"^v(\d+)$"));
        if (string.IsNullOrEmpty(version))
        {
          continue;
        }
        string template = string.Format(urlTemplate, apiPrefix, version,
        controller.ControllerName);
        controller.Selectors[0].AttributeRouteModel = new AttributeRouteModel()
        {
          Template = template
        };
      }
    }
  }
ログイン後にコピー

コードをデバッグすると、このメソッドはプログラムが実行された場合にのみ実行されることがわかりました。初めて実行されるだけで、何度も実行されることはないため、非常に効率的です。

5. 概要:

以上がASP.Net Core の WebApi のいくつかのバージョンの詳細な比較 (画像)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 Windows 11 で Core Isolation のメモリ整合性機能を有効にする方法 May 10, 2023 pm 11:49 PM

Microsoft の Windows 11 2022 Update (22H2) では、CoreIsolation のメモリ整合性保護がデフォルトで有効になっています。ただし、Windows 11 2022 Update (22H1) などの古いバージョンのオペレーティング システムを実行している場合は、この機能を手動で有効にする必要があります。 Windows 11 で CoreIsolation のメモリ整合性機能をオンにする Core Isolation について知らないユーザーのために説明すると、これは Windows 上の基本的なコア アクティビティをメモリ内で隔離することで悪意のあるプログラムから保護するように設計されたセキュリティ プロセスです。このプロセスとメモリ整合性機能を組み合わせることで、

コンピューターコアとはどういう意味ですか? コンピューターコアとはどういう意味ですか? Sep 05, 2022 am 11:24 AM

コンピュータでは、コアには 2 つの意味があります: 1. コア (コアとも呼ばれる) は、CPU の最も重要なコンポーネントです。CPU のすべての計算、ストレージ コマンドの受け入れ、データの処理はコアによって実行されます。2. コア、 core は Intel のプロセッサ名で、Core は Intel が Pentium プロセッサに続いて立ち上げたプロセッサ ブランドで、現在は第 12 世代 Core プロセッサがリリースされています。

Windows 11/10でプロセッサーのサーマルトリップエラーを修正する方法[修正] Windows 11/10でプロセッサーのサーマルトリップエラーを修正する方法[修正] Apr 17, 2023 am 08:13 AM

ラップトップやデスクトップなどのデバイスのほとんどは、若いゲーマーやプログラマーによって長年にわたって頻繁に使用されてきました。アプリケーションの過負荷により、システムがハングすることがあります。これにより、ユーザーはシステムを強制的にシャットダウンする必要があります。これは主に、重いゲームをインストールしてプレイするプレイヤーに発生します。強制シャットダウン後にシステムが起動しようとすると、以下に示すような黒い画面でエラーがスローされます。 以下は、この起動中に検出された警告です。これらは、イベント ログ ページの設定で表示できます。警告: プロセッサーの温度トリップ。何かキーを押すと続行します。 ..これらのタイプの警告メッセージは、デスクトップまたはラップトップのプロセッサ温度がしきい値温度を超えると常にスローされます。 Windows システムでこの問題が発生する理由を以下に示します。重いアプリケーションがたくさんあります

.NET Core クロスプラットフォーム アプリケーション開発の実践: Windows から Linux および macOS へのシームレスな移行 .NET Core クロスプラットフォーム アプリケーション開発の実践: Windows から Linux および macOS へのシームレスな移行 Feb 26, 2024 pm 12:55 PM

.NETCore のリリースにより、.NET 開発者は、複数のオペレーティング システム上で .NET アプリケーションを簡単に作成して実行できる新たな機会が得られます。この記事では、.NETCore を使用してクロスプラットフォーム アプリケーション開発を実現する方法について詳しく説明し、Windows、Linux、macOS などのオペレーティング システムでのベスト プラクティスの経験を共有します。 1. 開発環境を準備する クロスプラットフォームのアプリケーション開発を開始するには、まずターゲット プラットフォームごとに開発環境を準備する必要があります。 Windows Windows では、Visual Studio を通じて .NETCoreSDK をインストールできます。インストールが完了したら、Visual Studio を通じて .NETCore プロジェクトを作成して実行できます。李

COREコインは長期保有する価値があるのか​​? COREコインは投資する価値がありますか? COREコインは長期保有する価値があるのか​​? COREコインは投資する価値がありますか? Feb 29, 2024 pm 05:34 PM

COREコイン:長期保有する価値はありますか? CORE コインは Proof of Work (PoW) コンセンサスメカニズムに基づいた暗号通貨で、2018 年にコアチームによって設立されました。その目標は、支払いと価値の保管に広く使用される、安全で効率的かつスケーラブルなデジタル通貨システムを確立することです。 CORE コインは、ユーザーのプライバシー保護と取引の利便性を高める分散型決済ソリューションを提供するように設計されています。 CORE 通貨の利点とセキュリティ: CORE 通貨はワークロード証明コンセンサス メカニズムに基づいており、強力なセキュリティを備えています。効率的: CORE コインのトランザクション速度は速く、1 秒あたり数千のトランザクションを処理できます。スケーラブル: CORE コインはブロック容量が大きく、多数のトランザクションをサポートできます。分散化: CORE コインは分散化された暗号通貨です

Linux におけるコアとは何ですか Linux におけるコアとは何ですか Mar 23, 2023 am 10:00 AM

Linuxでは、コアとはデバッグ情報を付加したメモリイメージのことで、Linuxではプログラムが終了したり異常終了したりする際に、プログラム実行時のメモリ、レジスタ、スタックポインタなどの情報が含まれたコアファイルを解析に利用します。形式は ELF であり、プログラムの現在のステータスをファイルにダンプするものとして理解できます。

WebApi のクロスドメイン セカンダリ リクエストと Vue の単一ページの問題を Nginx がどのように解決するか WebApi のクロスドメイン セカンダリ リクエストと Vue の単一ページの問題を Nginx がどのように解決するか May 15, 2023 am 09:28 AM

1. はじめに プロジェクトがフロントエンドとバックエンドに分離されているため、API インターフェースと Web フロントエンドが別のサイトにデプロイされるため、前回の記事では、クロスドメインを使用した webapiajax クロスドメイン リクエスト ソリューション (cors 実装) を説明しました。 jsonpの代わりに処理します。しかし、しばらくすると、非常に奇妙な問題を発見しました。フロントエンドがリクエストを開始するたびに、ブラウザの開発者ツールを通じて、ネットワーク上に同じ URL に対する 2 つのリクエストがあることがわかります。最初の方法リクエストはオプションで、2 番目のリクエストのメソッドは実際の get または post で、最初のリクエストはデータを返さず、2 番目のリクエストは通常​​のデータを返します。 2. 最初のオプションの理由

IFA 2024 | Core Ultra シリーズ 2: Lunar Lake で、インテルはこれまでで最も効率的な x86 CPU を導入します IFA 2024 | Core Ultra シリーズ 2: Lunar Lake で、インテルはこれまでで最も効率的な x86 CPU を導入します Sep 04, 2024 am 06:38 AM

Meteor Lake としても知られる Core Ultra シリーズ 1 の発表から約 1 年後、Intel は第 2 世代を発表しました。 Core Ultra Series 2、別名 Lunar Lake は、6 月の Computex ですでに発表されています。 IFA で Core Ultr の最終発表

See all articles