API Gateway에서 메서드 응답 설정 - Amazon API Gateway

API Gateway에서 메서드 응답 설정

API 메서드 응답은 클라이언트가 수신할 API 메서드 요청의 출력을 캡슐화합니다. 출력 데이터에는 HTTP 상태 코드, 일부 헤더, 그리고 때로는 본문이 포함됩니다.

비 프록시 통합의 경우, 지정된 응답 파라미터 및 본문은 연결된 통합 응답 데이터로부터 매핑되거나 매핑에 따라 특정 정적 값이 할당될 수 있습니다. 이 매핑은 통합 응답에 지정되어 있습니다. 매핑은 통합 응답을 있는 그대로 통과하는 동일한 변환일 수 있습니다.

프록시 통합의 경우, API Gateway는 백엔드 응답을 메서드 응답으로 자동 전달합니다. API 메서드 응답을 설정할 필요는 없습니다. 그러나 Lambda 프록시 통합의 경우, 통합 응답을 메서드 응답에 성공적으로 매핑하려면 Lambda 함수는 API Gateway에 대해 이 출력 형식의 결과를 반환해야 합니다.

프로그램에 따라 메서드 응답 설정은 API Gateway의 MethodResponse 리소스 설정과 statusCode, responseParametersresponseModels의 속성 설정에 해당합니다.

API 메서드에 대해 상태 코드를 설정할 때는 예기치 않은 상태 코드의 모든 통합 응답을 처리하기 위해 상태 코드 하나를 기본값으로 선택해야 합니다. 500을 기본값으로 설정하는 것이 타당합니다. 왜냐하면 이것은 그렇지 않았다면 매핑되지 않았을 응답을 서버 측 오류로 캐스팅하는 것에 해당하기 때문입니다. 지침을 제공하기 위해, API Gateway 콘솔은 200 응답을 기본값으로 설정합니다. 그러나 이를 500 응답으로 재설정할 수 있습니다.

메서드 응답을 설정하려면 메서드 요청을 생성했어야 합니다.

메서드 응답 상태 코드 설정

메서드 응답의 상태 코드는 응답의 유형을 정의합니다. 예를 들어 200, 400 및 500 응답은 각각 성공, 클라이언트 측 오류 및 서버 측 오류 응답을 나타냅니다.

메서드 응답 상태 코드를 설정하려면 HTTP 상태 코드에 statusCode 속성을 설정합니다. 다음 AWS CLI 명령은 200의 메서드 응답을 생성합니다.

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200

메서드 응답 파라미터 설정

메서드 응답 파라미터는 연결된 메서드 요청에 대한 응답으로 클라이언트가 어떤 헤더를 수신하는지 정의합니다. 응답 파라미터는 API Gateway가 API 메서드의 통합 응답에 미리 지정된 매핑에 따라 통합 응답 파라미터를 매핑하는 대상을 지정하기도 합니다.

메서드 응답 파라미터를 설정하려면 responseParametersMethodResponse 맵에 "{parameter-name}":"{boolean}" 형식의 키 값 페어를 추가합니다. 다음 CLI 명령은 my-header 헤더를 설정하는 예제를 보여줍니다.

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false

메서드 응답 모델 설정

메서드 응답 모델은 메서드 응답 본문의 형식을 정의합니다. 응답 모델을 설정하기 전에 먼저 API Gateway에 모델을 생성해야 합니다. 이를 위해 create-model 명령을 호출할 수 있습니다. 다음 예시에서는 PetStorePet 메서드 요청에 대한 응답의 본문을 설명하기 위해 GET /pets/{petId} 모델을 생성하는 방법을 보여줍니다.

aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'

그 결과 API Gateway Model 리소스가 생성됩니다.

페이로드 형식을 정의하도록 메서드 응답 모델을 설정하려면 "application/json":"PetStorePet" 키-값 페어를 MethodResponse 리소스의 requestModels 맵에 추가합니다. 다음 put-method-response의 AWS CLI 명령은 이 작업이 어떻게 이루어지는지 보여줍니다.

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false \ --response-models '{"application/json":"PetStorePet"}'

메서드 응답 모델 설정은 강력한 형식의 API용 SDK를 생성할 때 필요합니다. 이를 통해 출력은 Java 또는 Objective-C의 적절한 클래스에 캐스팅됩니다.