단계와 단계 변수 또는 API 키에 대한 참조뿐 아니라 엔드포인트 구성을 변경하지 않은 상태에서 기존 API를 업데이트만할 목적으로 API 정의를 가져올 수 있습니다.
가져와 업데이트하는 작업은 병합 또는 덮어쓰기의 두 가지 모드에서 발생할 수 있습니다.
API(A
)를 다른 API(B
)로 병합할 때 두 API가 충돌하는 정의를 공유하지 않으면 그 결과로 얻는 API는 A
와 B
의 정의를 모두 유지합니다. 충돌이 발생하는 경우 병합하는 API(A
)의 메서드 정의가 병합되는 API(B
)의 해당하는 메서드 정의를 재정의합니다. 예를 들어 B
가 다음 메서드를 선언하여 200
및 206
응답을 반환했다고 가정하겠습니다.
GET /a
POST /a
그리고 A
는 다음 메서드를 선언하여 200
및 400
응답을 반환합니다.
GET /a
A
를 B
에 병합하면 그 결과로 얻는 API는 다음 메서드를 출력합니다.
GET /a
200
및 400
응답을 반환하고
POST /a
200
및 206
응답을 반환합니다.
외부 API 정의를 여러 개의 더 작은 파트로 분해하고 한 번에 한 파트의 변경사항만 적용할 경우 API 병합이 유용합니다. 예를 들어, 여러 팀이 API의 서로 다른 파트를 담당하고 있고 다른 비율로 변경사항을 사용할 수 있는 경우 병합이 발생할 수 있습니다. 이 모드에서는 가져온 정의에 특별히 정의되지 않은 기존 API의 항목이 그대로 유지됩니다.
API(A
)가 다른 API(B
)를 덮어쓰면 그 결과로 얻는 API는 덮어쓴 API(A
)의 정의를 취합니다. API 덮어쓰기는 외부 API 정의에 API의 전체 정의가 포함된 경우 유용합니다. 이 모드에서는 가져온 정의에 특별히 정의되지 않은 기존 API의 항목이 삭제됩니다.
API를 병합하려면 PUT
에 https://apigateway.
요청을 제출하세요. <region>
.amazonaws.com/restapis/<restapi_id>
?mode=mergerestapi_id
경로 파라미터 값이 제공된 API 정의가 병합되는 API를 지정합니다.
다음 코드 조각에서는 JSON의 OpenAPI API 정의를 페이로드로 API Gateway의 이미 지정된 API와 병합하는 PUT
요청 예를 보여줍니다.
PUT /restapis/
<restapi_id>
?mode=merge Host:apigateway.<region>
.amazonaws.com Content-Type: application/json Content-Length: ...An OpenAPI API definition in JSON
병합 업데이트 작업에서는 2개의 전체 API 정의를 가져와서 함께 병합합니다. 소규모 증분 변경사항의 경우 리소스 업데이트 작업을 사용할 수 있습니다.
API를 덮어쓰려면 PUT
요청을 https://apigateway.
에 제출하세요. <region>
.amazonaws.com/restapis/<restapi_id>
?mode=overwriterestapi_id
경로 파라미터는 제공된 API 정의로 덮어쓰는 API를 지정합니다.
다음 코드 조각에서는 JSON 형식의 OpenAPI 정의의 페이로드가 포함된 덮어쓰기 요청의 예를 보여줍니다.
PUT /restapis/
<restapi_id>
?mode=overwrite Host:apigateway.<region>
.amazonaws.com Content-Type: application/json Content-Length: ...An OpenAPI API definition in JSON
mode
쿼리 파라미터가 지정되지 않은 경우 병합이 사용됩니다.
참고
PUT
작업은 idempotent 방식이지만 원자성 작업은 아닙니다. 즉, 처리 과정에서 시스템 오류가 발생하면 API의 상태가 좋지 않을 수 있습니다. 그러나 작업을 성공적으로 반복하면 API가 첫 번째 작업이 성공한 것과 동일한 최종 상태가 됩니다.