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

C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?


Web APIサービスが公開されると、さまざまなクライアントアプリケーションがWebAPIサービスの使用を開始します。ビジネスの成長と要件の変化に応じて、サービスも変更する必要がある場合がありますが、サービスの変更は、既存のクライアントアプリケーションを壊さない方法で行う必要があります。

これは、WebAPIのバージョン管理が役立つ場合です。既存のサービスをそのまま維持するため、既存のクライアントアプリケーションを壊さずに、新しいクライアントアプリケーションが使用を開始できる新しいバージョンのサービスを開発します。

バージョン管理を実装するオプションの1つは、URIを使用することです。以下は、同じものを実装する方法の例です。

次のアクションメソッドを持つsudentコントローラーのバージョン1(V1)を考えてみましょう。

学生モデルV1

namespace DemoWebApplication.Models{
   public class StudentV1{
      public int Id { get; set; }
      public string Name { get; set; }
   }
}

Student Controller V1

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentV1Controller : ApiController{
      List<StudentV1> students = new List<StudentV1>{
         new StudentV1{
            Id = 1,
            Name = "Mark"
         },
         new StudentV1{
            Id = 2,
            Name = "John"
         }
      };
      [Route("api/v1/students")]
      public IEnumerable<StudentV1> Get(){
         return students;
      }
      [Route("api/v1/students/{id}")]
      public StudentV1 Get(int id){
         var studentForId = students.FirstOrDefault(x => x.Id == id);
         return studentForId;
      }
   }
}

上記の例では、属性ルーティングを使用してバージョン管理を実装しました。上記の例の出力を以下に示します-

C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?

C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?

ここで、学生コントローラーで、ビジネスが新しいユーザーに対してのみ新しい変更を提案し、既存のユーザーは引き続きバージョン1を使用する必要があるとしましょう。この場合、バージョン2(V2)を導入する必要があります。

学生モデルV2

namespace DemoWebApplication.Models{
   public class StudentV2{
      public int Id { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
   }
}

Student Controller V2

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentV2Controller : ApiController{
      List<StudentV2> students = new List<StudentV2>{
         new StudentV2{
            Id = 1,
            FirstName = "Roger",
            LastName = "Federer"
         },
         new StudentV2{
            Id = 2,
            FirstName = "Tom",
            LastName = "Bruce"
         }
      };
      [Route("api/v2/students")]
      public IEnumerable<StudentV2> Get(){
         return students;
      }
      [Route("api/v2/students/{id}")]
      public StudentV2 Get(int id){
         var studentForId = students.FirstOrDefault(x => x.Id == id);
         return studentForId;
      }
   }
}

出力

上記の例の出力を以下に示します。

C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?

C#ASP.NETWebAPIでURIを使用してWebAPIバージョニングを行う方法は?



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

    IHttpActionResultインターフェイスを実装することで、結果タイプとして独自のカスタムクラスを作成できます。 。 IHttpActionResultには、HttpResponseMessageインスタンスを非同期的に作成する単一のメソッドExecuteAsyncが含まれています。 public interface IHttpActionResult {    Task<HttpResponseMessage> ExecuteAsync(CancellationToken    cancellationToken); } コントロ

  2. VPN で Web セキュリティを強化する方法

    Web サイトのセキュリティは、Web サイトを起動するホストにとっても、何らかの理由で Web サイトにアクセスするクライアントにとっても重要です。したがって、セキュリティ対策が整っていることを確認することは、サイト所有者の義務になります。ランサムウェア攻撃の増加に伴い、リスクが大幅に増加しており、Web セキュリティを向上させるために仮想プライベート ネットワークを使用することが必要になっています。このガイドでは、VPN を使用して Web サイトのセキュリティを向上させる方法について説明します。 バーチャル プライベート ネットワーク – 簡単な紹介、種類、プロトコル VPN または