백엔드 개발 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) 사용자 정의 헤더를 사용하고 헤더를 허용하여

이 문서에서는 여러 버전의 ASP.NET Core Web API를 지원하는 방법을 살펴보겠습니다.

1 asp.net 핵심 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 인터페이스에 액세스할 때 항상 버전 번호가 필요합니다. api/v1/values를 통해 버전 1.0에 액세스하고, api/v2/values를 통해 버전 2.0에 액세스하고, URL에서 버전 번호를 변경할 수 있습니다. 심플하고 더 깔끔해 보이네요.

테스트 결과는 다음과 같습니다.

3. HTTP 헤더를 통한 버전 관리 구현

위 두 가지 방법 모두 버전 관리를 지원하도록 URL을 수정해야 합니다. 그러나 API의 URL을 깨끗하게 유지하려면 HTTP 헤더를 추가하여 API 버전 정보를 전달할 수도 있습니다. 이 작업을 수행하려면 ApiVersionReader 옵션을 구성해야 합니다. 코드는 다음과 같습니다:

강조 표시된 줄은 이제 헤더 "api-version"이 API 버전 번호의 예상 위치임을 나타냅니다. 경로 속성에 버전 세부정보가 없는지 확인하세요. 테스트 결과는 다음과 같습니다.

"api 버전"에 2.0을 값으로 제공하면 버전 2.0 컨트롤러를 호출하고 출력을 반환합니다.

간단하고 쉽게 설정할 수 있습니다. 그러나 이제 버전 관리를 위한 쿼리 문자열 매개 변수 방법이 작동하지 않습니다. 헤더가 설정되면 쿼리 문자열 매개변수를 지정할 수 없습니다. 두 경우를 모두 지원하려면 HeaderApiVersionReader 대신 QueryStringOrHeaderApiVersionReader를 사용하세요. 코드는 다음과 같습니다.

따라서 이제 쿼리 문자열 매개변수와 헤더가 지원됩니다. 기본 쿼리 문자열 매개변수 이름은 api-version이므로 생성자를 비워 둘 수 있지만, 다른 이름이 필요한 경우 제공해야 합니다. 쿼리 문자열 매개변수와 헤더에 다른 이름을 사용할 수도 있습니다. 또한 ReportApiVersions를 true로 설정하여 응답 헤더에 버전 정보를 반환한다는 점을 기억하세요. 아래 그림을 참조하세요.

이제 몇 가지 옵션을 더 살펴보겠습니다.

MapToApiVersion 매개변수 사용:

MapToApiVersion 속성을 사용하면 단일 API 작업을 모든 버전에 매핑할 수 있습니다. 즉, 여러 버전을 지원하는 단일 컨트롤러입니다. 컨트롤러에는 버전 3 지원 API 작업 메서드만 있을 수 있습니다. 이 경우 MapToApiVersion을 사용할 수 있습니다. 아래 코드를 살펴보세요.

위 코드의 의미는 공개 문자열 Get() 메서드는 버전 1.0에서만 지원되고, 공개 문자열 Getv3() 메서드는 버전 3.0에서만 지원된다는 것입니다.

사진과 실제 이미지가 있고 매우 유연하고 매우 마음에 듭니다.

Deprecated 매개변수 사용법:

여러 API 버전을 지원하는 경우 일부 버전은 결국 시간이 지남에 따라 더 이상 사용되지 않습니다. 하나 이상의 API 버전을 더 이상 사용되지 않음으로 표시하려면 컨트롤러를 더 이상 사용되지 않음으로 장식하면 됩니다. 이는 API 버전이 지원되지 않는다는 의미는 아닙니다. 여전히 해당 버전을 호출할 수 있습니다. 이는 호출하는 API 사용자에게 다음 버전이 향후 더 이상 사용되지 않을 것임을 알리는 방법일 뿐입니다.

위에서 더 이상 사용되지 않음을 TRUE로 설정하면 버전 1.0이 향후 더 이상 사용되지 않음을 의미합니다. API 인터페이스에 액세스하면 아래 그림과 같이 응답 헤더에서 다음 정보를 볼 수 있습니다.

ApiVersionNeutral 속성 사용:

ApiVersionNeutral 속성은 이 API가 더 이상 버전 제어를 지원하지 않음을 정의합니다. 이는 API 버전 관리를 지원하는지 여부 또는 API 버전 관리를 지원하지 않는 레거시 API에 관계없이 정확히 동일하게 작동하는 API에 유용합니다. 따라서 ApiVersionNeutral 속성을 추가하여 버전 제어를 종료할 수 있습니다.

버전 정보 가져오기

접속 중인 클라이언트 버전을 알고 싶다면 다음 코드를 통해 이 기능을 구현할 수 있습니다. 효율적인 방식으로 향상된 기능을 제공하는 동시에 변경 사항을 쉽게 추적할 수 있습니다. 이 문서에서는 ASP.NET coreWEB API에 여러 버전에 대한 지원을 추가하는 방법을 살펴보았습니다. nuget 패키지는 쿼리 문자열 매개변수를 통한 버전 관리를 지원하고 URL 및 헤더를 통해 경로 세그먼트를 추가합니다. 또한 버전 단일 API 작업과 버전을 선택 해제하는 기능도 제공합니다.

타사 패키지를 사용하지 않고도 API의 버전 제어를 구현할 수 있나요? 자세한 내용은 다루지 않겠습니다.

4. Ultimate 버전(NuGet 패키지 없음) asp.net 핵심 웹 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 11에서 코어 격리의 메모리 무결성 기능을 활성화하는 방법 Windows 11에서 코어 격리의 메모리 무결성 기능을 활성화하는 방법 May 10, 2023 pm 11:49 PM

Microsoft의 Windows 11 2022 업데이트(22H2)는 기본적으로 CoreIsolation의 메모리 무결성 보호를 활성화합니다. 그러나 Windows 11 2022 업데이트(22H1)와 같은 이전 버전의 운영 체제를 실행하는 경우 이 기능을 수동으로 켜야 합니다. Windows 11에서 CoreIsolation의 메모리 무결성 기능 켜기 Core Isolation에 대해 모르는 사용자를 위해 Windows의 기본 핵심 활동을 메모리에서 격리하여 악성 프로그램으로부터 보호하도록 설계된 보안 프로세스입니다. 메모리 무결성 기능과 결합된 이 프로세스는 다음을 보장합니다.

컴퓨터 코어는 무엇을 의미합니까? 컴퓨터 코어는 무엇을 의미합니까? Sep 05, 2022 am 11:24 AM

코어는 컴퓨터에서 두 가지 의미를 갖습니다. 1. 코어라고도 알려진 코어는 CPU의 가장 중요한 구성 요소입니다. CPU의 모든 계산, 저장 명령 수락 및 데이터 처리는 코어에서 수행됩니다. 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 Coin: 장기간 보유할 가치가 있나요? CORE 코인은 작업 증명(PoW) 합의 메커니즘을 기반으로 하는 암호화폐로 2018년 Core 팀에 의해 설립되었습니다. 그 목표는 지불 및 가치 저장에 널리 사용되는 안전하고 효율적이며 확장 가능한 디지털 통화 시스템을 구축하는 것입니다. CORE 코인은 사용자에게 더 많은 개인정보 보호와 거래 편의성을 제공하는 분산형 결제 솔루션을 제공하도록 설계되었습니다. CORE 화폐의 장점과 보안성: CORE 화폐는 작업량 증명 합의 메커니즘을 기반으로 하며 강력한 보안성을 갖추고 있습니다. 효율성: CORE 코인의 거래 속도는 빠르고 초당 수천 건의 거래를 처리할 수 있습니다. 확장성: CORE 코인은 블록 용량이 크고 많은 거래를 지원할 수 있습니다. 탈중앙화: CORE 코인은 탈중앙화 암호화폐입니다.

리눅스에서 코어란 무엇인가 리눅스에서 코어란 무엇인가 Mar 23, 2023 am 10:00 AM

Linux에서 core는 디버깅 정보가 추가된 메모리 이미지입니다. Linux에서 프로그램이 종료되거나 비정상적으로 종료되면 프로그램 실행 시 메모리, 레지스터, 스택 포인터 및 기타 정보가 포함된 코어 파일을 분석에 사용합니다. 형식은 ELF이며, 이는 프로그램의 현재 상태를 파일에 덤프하는 것으로 이해될 수 있습니다.

Nginx가 WebApi 도메인 간 보조 요청 및 Vue 단일 페이지 문제를 해결하는 방법 Nginx가 WebApi 도메인 간 보조 요청 및 Vue 단일 페이지 문제를 해결하는 방법 May 15, 2023 am 09:28 AM

1. 소개 프로젝트가 프런트엔드와 백엔드가 분리되어 있기 때문에 API 인터페이스와 웹 프런트엔드가 서로 다른 사이트에 배포되므로 이전 글에서는 webapiajax 크로스 도메인 요청 솔루션(cors 구현)에서는 크로스 도메인을 사용했습니다. jsonp 대신 처리합니다. 하지만 일정 시간이 지난 후 프런트 엔드에서 요청을 시작할 때마다 브라우저의 개발자 도구를 통해 네트워크 아래에 동일한 URL에 대한 요청이 두 개 있다는 것을 알 수 있었습니다. 요청은 옵션이고 두 번째 요청의 메서드는 실제 가져오기 또는 게시이며 첫 번째 요청은 데이터를 반환하지 않으며 두 번째 요청은 일반 데이터를 반환합니다. 2. 첫 번째 옵션을 선택한 이유

IFA 2024 | Core Ultra 시리즈 2: Intel은 Lunar Lake에서 역대 가장 효율적인 x86 CPU를 선보입니다. IFA 2024 | Core Ultra 시리즈 2: Intel은 Lunar Lake에서 역대 가장 효율적인 x86 CPU를 선보입니다. Sep 04, 2024 am 06:38 AM

Meteor Lake라고도 알려진 Core Ultra Series 1을 발표한 지 약 1년 후 Intel은 2세대를 출시합니다. Core Ultra 시리즈 2(일명 Lunar Lake)는 이미 6월 Computex에서 소개되었습니다. IFA에서 Core Ultr 최종 출시

See all articles