본문으로 건너뛰기
버전: Latest(v3.0) 🔥

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()와 같은)를 제외한 모든 라이브러리 함수에 접근할 수 없습니다.

Add "Remove" Tag

  • Function: 요청에서 필드를 제거합니다.
  • Configuration Steps:
    • 드롭다운에서 "Remove"을 선택합니다.
    • 삭제할 field name를 입력합니다.
    • 해당 범위(Headers, Query String, Body)를 선택합니다.
    • 태그를 적용하려면 Save을 클릭합니다.

Add "Rename" Tag

  • Function: 값은 변경하지 않고 existing 요청 필드의 이름을 바꿉니다.
  • Configuration Steps:
    • 드롭다운에서 "Rename"을 선택합니다.
    • current field namenew name를 입력합니다.
    • 해당 범위(Headers, Query String, Body)를 선택합니다.
    • 태그를 적용하려면 Save을 클릭합니다.

Add "Replace" Tag

  • 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 namenew value를 입력합니다.
    • data type를 선택합니다: Template – 미리 정의된 플레이스홀더 사용; String – 정적 텍스트; Function – 동적 논리 기반 값.
    • 적용 가능한 범위(Headers, Query String, Body)를 선택합니다.
    • 태그를 적용하려면 Save을 클릭합니다.

"추가" 태그 추가하기

  • Function: 기존 existing 필드에 추가 데이터를 추가하며, 이를 대체하지 않습니다.
  • Configuration Steps:
    • 드롭다운에서 "Append"를 선택합니다.
    • field namedata 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를 다시 배포합니다.