API Gateway에서 HTTP API에 대한 라우팅 생성 - Amazon API Gateway

API Gateway에서 HTTP API에 대한 라우팅 생성

수신 API 요청을 백엔드 리소스로 직접 라우팅합니다. 라우팅은 HTTP 메서드와 리소스 경로(예: GET /pets) 등 두 부분으로 구성됩니다. 라우팅에 대한 특정 HTTP 메서드를 정의할 수 있습니다. 또는 ANY 메서드를 사용하여 리소스에 대해 정의하지 않은 모든 메서드와 일치시킬 수 있습니다. 다른 경로와 일치하지 않는 요청에 대해 catch-all 역할을 하는 $default 경로를 생성할 수 있습니다.

참고

API Gateway는 URL 인코딩 요청 파라미터를 백엔드 통합에 전달하기 전에 디코딩합니다.

경로 변수 작업

HTTP API 라우팅에서 경로 변수를 사용할 수 있습니다.

예를 들어, GET /pets/{petID} 라우팅은 클라이언트가 GET에 제출하는 https://api-id.execute-api.us-east-2.amazonaws.com/pets/6 요청을 포착합니다.

복잡한 경로 변수는 라우팅의 모든 하위 리소스를 포착합니다. 복잡한 경로 변수를 생성하려면 변수 이름에 +를 추가합니다(예: {proxy+}). 복잡한 경로 변수는 리소스 경로의 끝에 있어야 합니다.

쿼리 문자열 파라미터 작업

HTTP API에 대한 요청에 포함된 경우 API Gateway에서는 기본적으로 쿼리 문자열 파라미터를 백엔드 통합으로 보냅니다.

예를 들어, 클라이언트가 요청을 https://api-id.execute-api.us-east-2.amazonaws.com/pets?id=4&type=dog에 보내는 경우 쿼리 문자열 파라미터 ?id=4&type=dog가 통합에 전송됩니다.

$default 라우팅 작업

$default 라우팅은 API의 다른 라우팅과 명시적으로 일치하지 않는 요청을 포착합니다.

$default 라우팅이 요청을 받는 경우 API Gateway에서 전체 요청 경로를 통합에 보냅니다. 예를 들어 $default 라우팅만 있는 API를 생성하여 ANY HTTP 엔드포인트가 있는 https://petstore-demo-endpoint.execute-api.com 메서드에 통합할 수 있습니다. 요청을 https://api-id.execute-api.us-east-2.amazonaws.com/store/checkout에 보내는 경우 API Gateway에서 요청을 https://petstore-demo-endpoint.execute-api.com/store/checkout에 보냅니다.

HTTP 통합에 대한 자세한 내용은 HTTP API에 대한 HTTP 프록시 통합 생성 단원을 참조하세요.

API 요청 라우팅

클라이언트가 API 요청을 보내는 경우 API Gateway에서 먼저 요청을 라우팅할 스테이지를 결정합니다. 요청이 스테이지와 명시적으로 일치하는 경우 API Gateway는 요청을 해당 스테이지로 보냅니다. 요청과 완전히 일치하는 스테이지가 없는 경우 API Gateway는 요청을 $default 스테이지로 보냅니다. $default 스테이지가 없는 경우 API에서 {"message":"Not Found"}가 반환되며 CloudWatch 로그가 생성되지 않습니다.

스테이지를 선택한 후 API Gateway는 라우팅을 선택합니다. API Gateway는 다음 우선 순위를 사용하여 가장 일치하는 라우팅을 선택합니다.

  1. 라우팅 및 메서드에 완전히 일치시킵니다.

  2. 복잡한 경로 변수({proxy+})가 있는 라우팅 및 메서드에 일치시킵니다.

  3. $default 라우팅

요청과 일치하는 라우팅이 없으면 API Gateway에서 {"message":"Not Found"}를 클라이언트로 반환합니다.

예를 들어 $default 단계가 있는 API와 다음 예제 라우팅을 고려합니다.

  1. GET /pets/dog/1

  2. GET /pets/dog/{id}

  3. GET /pets/{proxy+}

  4. ANY /{proxy+}

  5. $default

    다음 표에는 API Gateway에서 요청을 예제 라우팅으로 라우팅하는 방법이 요약되어 있습니다.

요청 선택한 라우팅 설명

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/1

GET /pets/dog/1

요청이 이 정적 라우팅과 완전히 일치합니다.

GET https://api-id.execute-api.region.amazonaws.com/pets/dog/2

GET /pets/dog/{id}

요청이 이 라우팅과 완전히 일치합니다.

GET https://api-id.execute-api.region.amazonaws.com/pets/cat/1

GET /pets/{proxy+}

요청이 라우팅과 완전히 일치하지 않습니다. GET 메서드와 복잡한 경로 변수가 있는 라우팅은 이 요청을 포착합니다.

POST https://api-id.execute-api.region.amazonaws.com/test/5

ANY /{proxy+}

ANY 메서드는 라우팅에 대해 정의하지 않은 모든 메서드와 일치합니다. 복잡한 경로 변수가 있는 라우팅은 $default 라우팅보다 우선 순위가 높습니다.