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
Reference
이 문제에 관하여(API Gateway 매핑 템플릿 설정 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamura_CD/items/ca8e531f74ea5b82a5b7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
🔷 속성 이름 바꾸기
아래의 「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
Reference
이 문제에 관하여(API Gateway 매핑 템플릿 설정 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tamura_CD/items/ca8e531f74ea5b82a5b7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
매핑 템플릿을 사용하여 API 요청 및 응답 매개변수 및 상태 코드 재정의
htps : // / cs. 아 ws. 아마존. 코 m / 그럼 _ jp / 아피가 테와 y / 아 st / ゔ ぇぺぺ グ イ ー / 아피가 테와 y- 오 ぇ ㅇ ㅇ ㅎ 어서 rs. HTML
Reference
이 문제에 관하여(API Gateway 매핑 템플릿 설정 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tamura_CD/items/ca8e531f74ea5b82a5b7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)