경로 이해

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

경로는 ProxyEndpoint에서 TargetEndpoint로 보내는 요청의 경로를 결정합니다. 경로에는 API ProxyEndpoint에 액세스하는 데 사용되는 URL과 TargetEndpoint로 정의된 백엔드 서비스의 URL이 포함됩니다.

ProxyEndpointTargetEndpoint 간의 관계를 설명하는 경로에 대한 소개 동영상을 시청하세요.

API 프록시 엔드포인트의 URL 확인

다음 이미지는 앱에서 ProxyEndpoint로 들어오는 요청과 해당 요청이 백엔드 서비스로 전달되는 것을 보여줍니다.

HTTP 클라이언트 요청은 Apigee의 API 프록시를 통해 HTTP 서비스로 이동한 후 API 프록시를 통해 클라이언트로 다시 전송됩니다.

Apigee에서 API 프록시를 만든 후 앱이 프록시에 액세스하는 데 사용하는 기본 URL의 형식은 다음과 같습니다.

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

각 항목의 의미는 다음과 같습니다.

  • 호스트 이름은 DNS에 추가한 도메인이거나 IP 주소입니다.
  • 기본 경로 및 리소스 경로는 API 프록시를 만들 때 정의됩니다.

Apigee에 요청이 수신되면 Apigee가 URL을 파싱하여 올바른 ProxyEndpoint에 요청을 전송합니다. 예를 들어 다음 URL은 API 프록시에 액세스하는 데 사용됩니다.

http://example.com/v1/weather/forecastrss

위 그림의 API 프록시에 대한 ProxyEndpoint 정의를 검토하면 URL이 어떻게 파싱되는지 알 수 있습니다.

  1. URL의 도메인 부분인 http://example.com은 환경 그룹에 정의된 호스트 이름에 해당합니다. 프록시가 해당 환경 그룹 내 하나 이상의 환경에 배포되었습니다. 자세한 내용은 환경 및 환경 그룹 정보를 참조하세요.
  2. URL의 두 번째 부분인 /v1/weatherProxyEndpoint<BasePath> 요소에 의해 결정됩니다. 프록시를 만들 때 기본 경로를 정의했습니다. 동일한 환경에 있는 두 API 프록시가 동일한 기본 경로를 가지지 않도록 기본 경로는 환경의 API 프록시마다 고유해야 합니다.
  3. URL의 세 번째 부분인 /forecastrss<Flows> 요소로 정의된 해당 조건부 흐름을 사용해 API 프록시에서 정의한 리소스입니다.

동영상: 짧은 동영상을 시청하여 API 프록시 엔드포인트에 대해 자세히 알아보세요.

대상 엔드포인트의 URL 확인

ProxyEndpoint 정의의 <RouteRule> 요소는 API 프록시 대상을 결정하며 ProxyEndpoint 요청의 PreFlow, 조건부 흐름, PostFlow 내 모든 정책이 처리된 후 평가됩니다.

ProxyEndpoint는 대상을 다음과 같이 정의할 수 있습니다.

  • 백엔드 서비스의 직접 URL
  • 단일 TargetEndpoint 정의
  • API 프록시가 조건에 따라 대상 엔드포인트에 요청을 위임하는 여러 TargetEndpoint
  • Null 경로 또는 대상으로, 요청이 대상으로 전달되지 않음을 의미합니다. 대신 요청의 모든 처리와 응답 생성이 Apigee에서 수행됩니다.

동영상: 짧은 동영상을 시청하여 대상 엔드포인트에 대해 자세히 알아보세요.

직접적인 URL

ProxyEndpoint는 이름이 지정된 TargetEndpoint 구성을 우회하여 백엔드 서비스를 직접 호출할 수 있습니다. 예를 들어 다음 <RouteRule>은 항상 http://example.com/myAPI:에 대한 HTTP 호출을 수행합니다.

<RouteRule name="default">
  <URL>http://example.com/myAPI</URL>
</RouteRule>

하지만 TargetEndpoint가 없으므로 ProxyEndpoint로 정의된 흐름에만 정책을 추가할 수 있습니다.

단일 대상

위 그림과 같이 단일 대상 정의에서 ProxyEndpoint는 이름으로 단일 TargetEndpoint 정의를 참조합니다.

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

이 API 프록시에 대한 모든 요청은 동일한 TargetEndpoint 정의로 전달됩니다. TargetEndpoint<URL> 태그는 백엔드 서비스의 위치를 결정합니다. 위의 그림에서 대상 URL은 http://weather.yahooapis.com입니다.

조건부 대상

<RouteRule> 태그를 사용하면 조건에 따른 대상에 요청을 전달할 수 있습니다. 흐름 변수, 쿼리 매개변수, HTTP 헤더, 메시지 콘텐츠 또는 시간과 언어 같은 문맥 정보를 사용하여 대상 엔드포인트를 확인할 수 있습니다. 예를 들어 요청 URL에 미국 및 영국과 같은 지리적 영역을 포함할 수 있습니다. 그런 다음 리전을 기준으로 대상 엔드포인트로 요청을 라우팅할 수 있습니다.

다음 라우팅 규칙은 요청의 HTTP 헤더를 평가합니다. HTTP 헤더 routeTo의 값이 TargetEndpoint1인 경우 요청은 TargetEndpoint1이라는 이름의 TargetEndpoint로 전달됩니다. 그렇지 않으면 요청이 TargetEndpoint2로 전달됩니다.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

여러 라우팅 규칙이 있는 경우 조건이 없는 라우팅 규칙으로 기본 규칙을 만듭니다. 규칙은 ProxyEndpoint에서 하향식으로 평가되므로 기본 라우팅 규칙이 조건부 경로 목록에서 마지막으로 정의되었는지 확인합니다.

조건부 경로조건 참조도 확인하세요.

동영상: 짧은 동영상을 시청하여, 조건부 대상을 사용하여 대상 엔드포인트로 라우팅하는 방법을 알아보세요.

Null 경로

null 경로는 요청 메시지를 TargetEndpoint로 전달할 필요가 없는 시나리오를 지원합니다. 예를 들어 ProxyEndpoint가 자바스크립트를 사용하여 외부 서비스를 호출하는 등 필요한 모든 처리를 수행할 때 유용합니다.

다음 예시에서는 null 경로를 정의합니다.

<RouteRule name="GoNowhere"/>

자세히 알아보기