Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NET WebAPI에서 URI로 Web API 버전 관리를 수행하는 방법은 무엇입니까?

<시간/>

Web API 서비스가 공개되면 다양한 클라이언트 응용 프로그램이 Web API 서비스를 사용하기 시작합니다. 비즈니스가 성장하고 요구 사항이 변경되면 서비스도 변경해야 할 수 있지만 기존 클라이언트 애플리케이션을 중단하지 않는 방식으로 서비스를 변경해야 합니다.

이때 Web API 버전 관리가 도움이 됩니다. 기존 서비스를 그대로 유지하여 기존 클라이언트 애플리케이션을 손상시키지 않고 새로운 클라이언트 애플리케이션에서 사용할 수 있는 새로운 버전의 서비스를 개발합니다.

버전 관리를 구현하는 옵션 중 하나는 URI를 사용하는 것입니다. 다음은 동일한 구현 방법에 대한 예입니다.

예시

다음과 같은 actionmethod를 가진 sudent controller의 버전 1(V1)을 고려해보자.

학생 모델 V1 -

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

학생 컨트롤러 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.NET WebAPI에서 URI로 Web API 버전 관리를 수행하는 방법은 무엇입니까?

C# ASP.NET WebAPI에서 URI로 Web API 버전 관리를 수행하는 방법은 무엇입니까?

이제 학생 컨트롤러에서 비즈니스에서 신규 사용자만을 위한 새로운 변경 사항을 제안했으며 기존 사용자는 여전히 버전 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; }
   }
}

학생 컨트롤러 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.NET WebAPI에서 URI로 Web API 버전 관리를 수행하는 방법은 무엇입니까?

C# ASP.NET WebAPI에서 URI로 Web API 버전 관리를 수행하는 방법은 무엇입니까?