Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Uri.IsBaseOf() 메서드 – 한 URI가 다른 URI의 기본 주소인지 확인하는 방법

C#의 Uri.IsBaseOf() 메서드는 현재 Uri 인스턴스가 지정된 다른 Uri 인스턴스의 기본(base) URI에 해당하는지 여부를 판별하는 데 사용됩니다. 예를 들어, https://www.example.com/https://www.example.com/index.htm의 기본 주소가 될 수 있습니다.

구문

Uri.IsBaseOf() 메서드의 기본 구문은 다음과 같습니다.

public bool IsBaseOf (Uri uri);

매개변수 uri는 테스트 대상이 되는 Uri 인스턴스를 의미합니다. 이 메서드는 현재 Uri가 지정된 uri의 기본 주소이면 true를, 그렇지 않으면 false를 반환합니다.

예제 1: 같은 도메인 내에서 기본 주소 확인하기

다음 예제에서는 두 개의 URI를 생성한 뒤, 서로 같은지 비교하고 IsBaseOf() 메서드로 기본 주소 관계를 확인해 보겠습니다.

using System;
public class Demo {
   public static void Main(){
      Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
      Console.WriteLine("URI = "+newURI1);
      Uri newURI2 = new Uri("https://www.tutorialspoint.com/");
      Console.WriteLine("URI = "+newURI2);
      if(newURI1.Equals(newURI2))
         Console.WriteLine("두 URI는 동일합니다!");
      else
         Console.WriteLine("두 URI는 동일하지 않습니다!");
      if(newURI1.IsBaseOf(newURI2))
         Console.WriteLine("newURI1이 기본 주소입니다");
      else
         Console.WriteLine("newURI1은 기본 주소가 아닙니다");
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

URI = https://www.tutorialspoint.com/index.htm
URI = https://www.tutorialspoint.com/
두 URI는 동일하지 않습니다!
newURI1이 기본 주소입니다

흥미로운 점은 두 URI가 서로 다르다고 판정되었음에도 불구하고, index.htm을 포함하는 첫 번째 URI가 루트 경로인 두 번째 URI의 기본 주소로 인식되었다는 것입니다. 이처럼 IsBaseOf()는 단순 문자열 비교가 아닌 URI 계층 구조를 기준으로 판단합니다.

예제 2: 서로 다른 도메인 간 비교

이번에는 서로 다른 도메인을 가진 두 URI를 비교해 보겠습니다.

using System;
public class Demo {
   public static void Main(){
      Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
      Console.WriteLine("URI = "+newURI1);
      Uri newURI2 = new Uri("https://www.qries.com/");
      Console.WriteLine("URI = "+newURI2);
      if(newURI1.Equals(newURI2))
         Console.WriteLine("두 URI는 동일합니다!");
      else
         Console.WriteLine("두 URI는 동일하지 않습니다!");
      if(newURI1.IsBaseOf(newURI2))
         Console.WriteLine("newURI1이 기본 주소입니다");
      else
         Console.WriteLine("newURI1은 기본 주소가 아닙니다");
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

URI = https://www.tutorialspoint.com/index.htm
URI = https://www.qries.com/
두 URI는 동일하지 않습니다!
newURI1은 기본 주소가 아닙니다

정리

Uri.IsBaseOf() 메서드는 스키마(scheme), 호스트(host), 포트(port), 경로(path) 등을 종합적으로 고려하여 두 URI 간의 계층적 포함 관계를 판별합니다. 따라서 URL 기반의 리소스 탐색, 상대 경로 해석, 사이트맵 검증 등의 작업에서 유용하게 활용할 수 있습니다. 단, 도메인이 다른 경우에는 항상 false를 반환한다는 점을 기억해 두시기 바랍니다.