Request Transformer Advanced
개요
Request Transformer Advanced 정책은 API 요청이 백엔드에 도달하기 전에 동적으로 수정될 수 있도록 허용합니다. 이 정책은 five tag operations을 통해 변환 기능을 제공하여 요청이 원하는 구조에 맞도록 보장합니다:
- Remove Tag: 특정 헤더, 쿼리 매개변수 또는 본문 필드를 삭제합니다.
- Rename Tag: 값을 유지하면서 필드의 이름을 변경합니다.
- Replace Tag: 템플릿, 문자열 또는 함수를 사용하여 기존 값을 수정합니다.
- Add Tag: 헤더, 쿼리 매개변수 또는 본문에 새로운 필드를 추가합니다.
- Append Tag: 기존 필드를 대체하는 대신 데이터 추가합니다.
이 정책은 백엔드로 전달하기 전에 structuring, securing, and optimizing API 요청에 특히 유용합니다.
구성 세부정보
매개변수 구성
태그를 추가하면 사용자는 이러한 템플릿을 값으로 사용할 수 있습니다:
현재 요청 헤더, 쿼리 매개변수 및 캡처된 URI 그룹을 템플릿으로 사용하여 지원되는 구성 필드를 채울 수 있습니다.
- Request Parameter: 헤더
- Template:
$(headers.<header_name>), $(headers["<Header-Name>"]) 또는 $(headers["<header-name>"])
- Request Parameter: 쿼리 문자열
- Template:
$(query_params.<query-param-name>) 또는 $(query_params["<query-param-name>"])
- Request Parameter: 캡처된 URI
- Template:
$(uri_captures.<group-name>) 또는 $(uri_captures["<group-name>"])
- Request Parameter: 공유 변수
- Template:
$(shared.<variable-name>) 또는 $(shared["<variable-name>"])
템플릿을 이스케이프하려면 따옴표로 감싸고 다른 템플릿 안에 전달합니다. 예를 들어:
$('$(something_that_needs_to_escaped)')
Note: 플러그인은 변환 전에 요청 헤더, 쿼리 문자열 및 캡처된 URI의 변경 불가능한 테이블을 생성합니다. 따라서 템플릿에서 사용되는 매개변수를 업데이트하거나 제거해도 템플릿의 렌더링 값에는 영향을 미치지 않습니다.
헤더 값이 “Basic”으로 접두사가 붙지 않은 경우 접두사를 추가하는 완전한 Lambda 예제:
Authorization:$((function()
local value = headers.Authorization
if not value then
return
end
if value:sub(1, 6) == "Basic " then
return value -- 이미 올바르게 형성됨
end
return "Basic " .. value -- 올바른 접두사 추가
end)())
Note: 특히 위의 예와 같은 다중 행 템플릿에서는 후행 공백이나 새 줄을 추가하지 않도록 하십시오. 이러한 요소는 플레이스홀더 외부에 위치하게 되어 템플릿의 일부로 간주되며, 따라서 생성된 값에 추가됩니다. 환경은 샌드박스화되어 있어, Lambdas는 문자열 메서드(위의 예에서 sub()와 같은)를 제외한 라이브러리 함수에 접근할 수 없습니다.
"제거" 태그 추가
- Function: 요청에서 필드를 제거합니다.
-
Configuration Steps:
- 드롭다운에서 "Remove"을 선택합니다.
- 삭제할 field name를 입력합니다.
- 해당 범위(Headers, Query String, Body)를 선택합니다.
- 태그를 적용하려면 Save을 클릭합니다.
"이름 변경" 태그 추가
- Function: 요청 필드의 이름을 변경하되, 값은 변경하지 않습니다.
-
Configuration Steps:
- 드롭다운에서 "Rename"을 선택합니다.
- current field name과 new name를 입력합니다.
- 해당 범위(Headers, Query String, Body)를 선택합니다.
- 태그를 적용하려면 Save을 클릭합니다.
"대체" 태그 추가
- Function: 기존 필드의 값을 templates, strings, or functions을 사용하여 변경합니다.
-
Configuration Steps:
- 드롭다운에서 "Replace"을 선택합니다.
- 대체할 field name를 입력합니다.
- new value 유형(Template, String, Function)을 선택합니다.
- replacement value를 입력합니다.
- 해당 범위(Headers, Query String, Body)를 선택합니다.
- 태그를 적용하려면 Save을 클릭합니다.
"추가" 태그 추가
- Function: 요청에 새 필드를 삽입합니다.
-
Configuration Steps:
- 드롭다운에서 "Add"를 선택합니다.
- field name 및 new value를 입력합니다.
- data type를 선택합니다: Template – 미리 정의된 플레이스홀더 사용; String – 정적 텍스트; Function – 동적 논리 기반 값.
- 적용 가능한 범위(Headers, Query String, Body)를 선택합니다.
- 태그를 적용하려면 Save을 클릭합니다.
"Append" 태그 추가
- Function: 기존 existing 필드에 추가 데이터를 추가하며, 이를 대체하지 않습니다.
-
Configuration Steps:
- 드롭다운에서 "Append"를 선택합니다.
- field name 및 data to append을 입력합니다.
- data type (Template, String, Function)을 선택합니다.
- 적용 가능한 범위(Headers, Query String, Body)를 선택합니다.
- 태그를 적용하려면 Save을 클릭합니다.
태그 업데이트
- Function: 기존 태그를 수정할 수 있습니다.
-
Configuration Steps:
- 태그 테이블에서 tag을 클릭합니다.
- 현재 태그 세부정보가 포함된 update popup가 나타납니다.
- 필요한 값(예: 필드 이름, 새 값, 데이터 유형)을 수정합니다.
- 변경 사항을 적용하려면 Save을 클릭합니다.
- 변경 사항이 적용되도록 API를 다시 배포합니다.
태그 삭제
- Function: 정책 구성에서 기존 태그를 제거합니다.
-
Configuration Steps:
- 태그 테이블에서 tag을 찾습니다.
- 태그 이름 옆에 있는 (x) icon을 클릭합니다.
- confirmation popup이 나타납니다.
- 클릭하여 Check 삭제를 확인하세요.
- API를 재배포하여 삭제를 완료하세요.