API Gateway의 REST API에 모델을 연결하려면 어떻게 해야 합니까?

4분 분량
0

Amazon API Gateway의 REST API와 모델을 통합하려고 합니다. 어떻게 해야 하나요?

해결 방법

중요: API Gateway 모델JSON 스키마 draft 4를 사용해야 합니다.

REST API와 연결할 모델 스키마를 작성합니다.

모델 스키마를 작성하는 방법에 대한 자세한 내용은 모델 및 매핑 템플릿 작업을 참조하세요.

예제 모델 스키마

참고: 이 예제 모델은 appic/json기본 키로 사용하여 매핑 템플릿을 선택하며 다음 사항이 필요합니다.
API 사용자는 요청 본문에 UserID와 **이름(Name)**을 전달해야 합니다.
UserID 및 **이름(Name)**은 문자열 값이어야 합니다.
**나이(Age)**는 18 이상의 정수 값을 제공해야 합니다.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "User",
    "type": "object",
    "properties": {
        "UserID": {
            "type": "string"
        },
        "Name": {
            "type": "string"
        },
        "Age": {
            "description": "Age in years",
            "type": "integer",
            "minimum": 18
        }
    },
    "required": ["UserID", "Name"]
}

REST API에 대한 모델 생성

API Gateway에서 모델 생성의 지침에 따라, 작성한 스키마를 사용하여 모델을 생성합니다.

API 메서드에 모델 연결

1.    API Gateway 콘솔에서 API를 엽니다.

2.    탐색 창에서 리소스를 선택합니다.

3.    모델에 연결할 API 메서드를 선택합니다.

4.    메서드 실행(Method Execution) 창에서 **메서드 요청(Method Request)**을 선택합니다.

5.    **Request Validator(요청 검사기)**에서 **Validate body(본문 검사)**를 선택합니다. 그런 다음 확인 아이콘을 선택하여 선택 사항을 저장합니다.

6.    **Request Body(요청 본문)**를 확장합니다. 그런 다음 모델 추가를 선택합니다.

7.    콘텐츠 유형에 모델의 콘텐츠 유형(예: "application/json")을 입력합니다.

8.    모델 이름에서 생성한 모델을 선택합니다.

9.    확인 아이콘을 선택하여 선택 사항을 저장합니다.

모델 테스트

1.    API의 리소스 목록에서 모델에 연결할 API 메서드를 선택합니다.

2.    메서드 실행(Method Execution) 창에서 TEST를 선택합니다.

3.    **요청 본문(Request Body)**에 생성한 모델 스키마와 일치하는 요청 본문을 입력합니다.

참고: application/json 예제 모델을 테스트하려면 다음 예제 요청 본문을 사용하세요.

{ "UserID": "abc123", "Name":"Ana","Age":21}

4.    [Test]를 선택합니다.

5.    반환된 요청 본문이 모델 스키마와 일치하면 테스트 응답이 성공한 것입니다.

(선택 사항) 모델에 대한 매핑 템플릿 생성

참고: 매핑 템플릿을 생성하여 API의 통합 백엔드로 전송된 요청을 수정할 수 있습니다.

매핑 템플릿을 생성하려면 다음을 수행합니다.

1.    API의 리소스 목록에서 모델에 연결할 API 메서드를 선택합니다.

2.    메서드 실행(Method Execution) 창에서 **통합 요청(Integration Request)**을 선택합니다.

3.    **매핑 템플릿(Mapping Templates)**을 확장합니다.

4.    **요청 본문 패스스루(Request body passthrough)**에서 **정의된 템플릿이 없는 경우(권장)(When there are no templates defined (recommended))**을 선택합니다.

5.    **매핑 템플릿 추가(Add mapping template)**를 선택합니다.

6.    콘텐츠 유형에 모델의 콘텐츠 유형(예: "application/json")을 입력합니다. 그런 다음 확인 아이콘을 선택하여 선택 사항을 저장합니다.

7.     **템플릿 생성(Generate template)**에서, 생성한 모델을 선택합니다.

참고: application/json 예제 모델은 다음과 같이 나타납니다.

#set($inputRoot = $input.path('$')) { "UserID" : "$inputRoot.UserID", "Name" : "$inputRoot.Name", "Age" : $inputRoot.Age }

8.     API의 통합 백엔드에 전달할 값에 따라 템플릿을 수정합니다.

9.    **저장(Save)**을 선택합니다.

REST API를 배포하여 변경 사항 커밋

1.    탐색 창에서 리소스를 선택합니다.

2.    [Actions]를 선택합니다. 그런 다음 **Deploy API(API 배포)**를 선택합니다.

3.    **배포 단계(Deployment stage)**에서, 기존 단계를 선택하거나 **새 단계(New Stage)**를 선택하여 단계를 생성합니다.
중요: 새 단계를 생성한 경우에는 **단계 이름(Stage name)**에도 이름을 입력해야 합니다.

4.    **배포(Deploy)**를 선택합니다. 배포된 API에 요청하기 위한 호출 URL이 표시됩니다.

5.    호출 URL을 복사합니다.

REST API 테스트

모델과 연결된 메서드 및 콘텐츠 유형을 사용하는 API에 테스트 요청을 전송합니다. 요청이 성공하면 200 OK 응답이 반환됩니다. 요청이 실패하면 400 상태 코드가 반환됩니다.

테스트 요청을 전송하려면 API 개발 도구 또는 curl 명령을 사용합니다.

자세한 내용은 Amazon API Gateway에서 REST API 호출을 참조하세요.

POST HTTP 메서드 요청을 사용하고 200 OK 응답을 테스트하는 curl 명령의 예제

참고: 이 예제 명령은 예제 application/json 모델에 대한 테스트 요청을 전송합니다. 이 명령은 200 OK 응답을 반환합니다.

curl -X POST <API URL> -H 'Content-Type: application/json' -d '{ "UserID": "abc123", "Name":"Ana","Age":21}'

(선택 사항) POST HTTP 메서드 요청을 사용하고 400 상태 코드를 테스트하는 curl 명령의 예제

참고: 이 예제 명령의 요청 본문은 필수 예제 모델 속성인 UserID를 포함하지 않으므로 유효하지 않습니다. 이 명령은 400 상태 코드를 반환합니다.

curl -X POST <API URL> -H 'Content-Type: application/json' -d '{ "Name":"Ana", "Age":21}