API Gateway 매핑 템플릿 설정 예

9754 단어 vtlAPIGateway

🔶 개요



API Gateway의 통합 응답에서 설정하는 매핑 템플릿을 사용하면 백엔드에서 받은 응답을 어느 정도 처리할 수 있습니다.

다음은 VTL 로 기술하는 템플릿의 설정예입니다.



🔶 설정 예



🔷 속성 이름 바꾸기



아래의 「name」과 「data」의 프로퍼티명을, 「NAMAE」, 「DEETA」로 옮겨놓는 예.

전환 전 응답

{
  "name": "hoge",
  "data": {
    "param1": 10,
    "param2": 20
  }
}

템플릿 예제$input.json('$') 에서 백엔드에서 응답 JSON 데이터를 호출할 수 있습니다.'$' 는 JSON 데이터 전체를 가리키고 $input.json('$.data.param1') 와 같이 속성 이름을 지정합니다.
## プロパティ名の置き換え
{
  "NAMAE": $input.json('$.name'),
  "DEETA": $input.json('$.data')
}

변환 후 응답

{
  "NAMAE": "hoge",
  "DEETA": {
    "param1": 10,
    "param2": 20
  }
}

🔷if 문으로 분기



전환 전 응답

{
  "name": "hoge",
  "data": {
    "param1": 10,
    "param2": 20
  }
}

템플릿 예제#if(評価式) #else #end 의 기본형으로 if문을 사용할 수 있습니다.
또한 다음 예제와 같이 #elseif도 사용할 수 있습니다.
이하에서는 #{elseif} 라고 쓰고 있습니다만, {}#elseif 하지만 문장의 전후의 캐릭터 라인에 의해 읽을 수 없게 되는 것을 막기 위한 괄호 문자입니다.

한 가지 주목하는 것은 값을 평가할 때 응답을 데이터의 객체로 호출하는 $input.path('$')를 사용하는 것입니다.$input.json('$') 는 JSON 데이터를 호출하는 방법이며 JSON 데이터는 if 문으로 평가할 수 없습니다.
## if文分岐
{
  "result": #if($input.path('$.name') == "hoge")
              "ほげでした"
            #{elseif}($input.path('$.name') == "fuga")
              "ふがでした"
            #else
              "ぴよかも"
            #end,
  "data": $input.json('$.data')
}

변환 후 응답

{
  "result": "ほげでした",
  "data": {
    "param1": 10,
    "param2": 20
  }
}

🔷 응답의 HTTP 상태 덮어쓰기



템플리트에 #set($context.responseOverride.status = (ステータスコード))를 작성하면 요청자에 대한 응답의 HTTP 상태 값을 임의의 값으로 겹쳐쓸 수 있습니다.

템플릿 예제
#set($context.responseOverride.status = 200)
{
  "result": "error",
  "message": "エラーだけど、ステータス200で返します"
}

🔷 스테이지 변수 사용



템플릿에 ${stageVariables.(設定したステージ変数名)} 를 기술하는 것으로, 스테이지 변수로 설정한 값을 세트 할 수가 있습니다.

템플릿 예제
## ステージ変数に「hensu=hoge」を設定している場合
{
  "result": "ステージ変数も呼べます",
  "value": "値は${stageVariables.hensu}"
}


변환 후 응답

{
  "result": "ステージ変数も呼べます",
  "value": "値はhoge"
}

🔶 제한



🔷 템플릿 내에서 HTTP 상태를 호출할 수 없음



템플릿내의 기술만으로, 「백엔드로부터의 응답의 스테이터스가 200이면, ○○라고 돌려준다」라고 하는 처리는 할 수 없습니다.
통합 응답의 HTTP 상태 정규 표현식에서 "백엔드에서 응답 상태가 200일 때 응답은 ~"와 같이 설정해야 합니다.

2019/03/05 현재 HTTP 상태를 호출할 방법이 없습니다.

🔶 참고



매핑 템플릿을 사용하여 API 요청 및 응답 매개변수 및 상태 코드 재정의
htps : // / cs. 아 ws. 아마존. 코 m / 그럼 _ jp / 아피가 테와 y / 아 st / ゔ ぇぺぺ グ イ ー / 아피가 테와 y- 오 ぇ ㅇ ㅇ ㅎ 어서 rs. HTML

좋은 웹페이지 즐겨찾기