Apigee Edge 문서입니다.
Apigee X 문서로 이동 정보
대상
AssignMessage 정책은 API 프록시 흐름 중에 새 요청 및 응답 메시지를 변경하거나 만듭니다. 정책을 사용하면 이러한 메시지에 대해 다음 작업을 수행할 수 있습니다.
- 메시지에 새 양식 매개변수, 헤더, 쿼리 매개변수 추가하기
- 기존 속성을 한 메시지에서 다른 메시지로 복사하기
- 메시지에서 헤더, 쿼리 매개변수, 양식 매개변수, 메시지 페이로드를 삭제합니다.
- 메시지에서 기존 속성 값을 설정합니다.
AssignMessage 정책을 사용하면 일반적으로 요청 또는 응답의 속성을 추가, 변경, 삭제할 수 있습니다. 그러나 커스텀 요청 메시지 만들기에 설명된 대로 AssignMessage 정책을 사용하여 커스텀 요청 또는 응답 메시지를 만들고 대체 대상으로 전달할 수도 있습니다.
AssignMessage 정책은 다음 하위 요소로 흐름 변수를 만들거나 변경할 수 있습니다.
<AssignMessage>
요소
AssignMessage 정책을 정의합니다.
기본값 | 아래의 기본 정책 탭을 참조하세요. |
필수 여부 | 필수 |
유형 | 복합 객체 |
상위 요소 | 해당 사항 없음 |
하위 요소 |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
<AssignMessage>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage>
요소는 다음 문법을 사용합니다.
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage child elements are optional --> <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
기본 정책
다음 예시는 Edge UI에서 흐름에 AssignMessage 정책을 추가할 때의 기본 설정을 보여줍니다.
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Edge UI에 새 AssignMessage 정책을 삽입하면 가능한 모든 작업에 대한 스터브가 템플릿에 포함됩니다. 일반적으로 이 정책으로 수행할 작업을 선택하고 나머지 하위 요소를 삭제합니다. 예를 들어 복사 작업을 수행하려면 <Copy>
요소를 사용하고 정책에서 <Add>
, <Remove>
, 기타 하위 요소를 삭제하여 더 읽기 쉽게 만듭니다.
이 요소에는 다음과 같이 모든 정책에 공통된 속성이 있습니다.
속성 | 기본 | 필수 여부 | 설명 |
---|---|---|---|
name |
N/A | 필수 |
정책의 내부 이름입니다. 원하는 경우 |
continueOnError |
false | 선택사항 | 정책이 실패할 때 오류를 반환하려면 'false'로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다. 정책이 실패한 후에도 흐름 실행이 계속되게 하려면 'true'로 설정합니다. |
enabled |
true | 선택 | 정책을 시행하려면 'true'로 설정합니다. 정책을 '사용 중지'하려면 'false'로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다. |
async |
false | 지원 중단됨 | 이 속성은 지원이 중단되었습니다. |
다음 표에서는 <AssignMessage>
의 하위 요소에 대한 대략적인 설명을 제공합니다.
하위 요소 | 필수 여부 | 설명 |
---|---|---|
일반적인 작업 | ||
<Add> |
선택사항 | <AssignTo> 요소로 지정된 메시지 객체에 정보를 추가합니다.
|
<Copy> |
선택사항 | source 속성으로 지정된 메시지에서 <AssignTo> 요소로 지정된 메시지 객체로 정보를 복사합니다. |
<Remove> |
선택사항 | <AssignTo> 요소에 지정된 메시지 변수에서 지정된 요소를 삭제합니다. |
<Set> |
선택사항 | <AssignTo> 요소로 지정된 요청 또는 응답에서 기존 속성 값을 대체합니다.
|
기타 하위 요소 | ||
<AssignTo> |
선택사항 | AssignMessage 정책이 작동하는 메시지를 지정합니다. 표준 요청 또는 응답이거나 새 커스텀 메시지일 수 있습니다. |
<AssignVariable> |
선택사항 | 흐름 변수에 값을 할당합니다. 변수가 없으면 <AssignVariable> 가 변수를 만듭니다. |
<IgnoreUnresolvedVariables> |
선택사항 | 해결되지 않은 변수가 발생하면 처리를 중지할지 여부를 결정합니다. |
각 하위 요소는 다음 섹션에 설명되어 있습니다.
예
다음 예시에서는 AssignMessage 정책을 사용할 수 있는 몇 가지 방법을 보여줍니다.
1: 헤더 추가
다음 예시에서는 <Add>
요소가 있는 요청에 헤더를 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2: 페이로드 삭제
다음 예시에서는 <Remove>
요소가 있는 응답에서 페이로드를 삭제합니다.
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
3: 응답 수정
다음 예시에서는 헤더를 추가하여 기존 응답 객체를 수정합니다.
<AssignMessage name="modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="response"></AssignTo> </AssignMessage>
이 예시에서는 새 메시지를 만들지 않습니다. 대신 HTTP 헤더를 추가하여 기존 응답 메시지를 수정합니다.
이 예시에서는 <AssignTo>
요소에서 변수 이름을 생략하고 type
을 'response'로 지정하므로 이 정책은 대상 서버에서 반환된 응답 객체를 수정합니다.
이 정책에 의해 응답 메시지에 추가된 HTTP 헤더는 LookupCache 정책에 의해 채워진 변수에서 파생됩니다. 따라서 이 Assign Message 정책에 의해 수정된 응답 메시지에는 캐시에서 결과를 가져왔는지 여부를 나타내는 HTTP 헤더가 포함됩니다. 응답에서 헤더를 설정하면 디버깅 및 문제 해결에 유용할 수 있습니다.
4: 동적 콘텐츠 설정
Assign Message를 사용하여 응답 페이로드와 요청 메시지의 페이로드에 동적 콘텐츠를 삽입할 수 있습니다.
XML 페이로드에 Edge 흐름 변수를 삽입하려면 지정된 변수를 중괄호로 래핑합니다(예: {prefix.name}
).
다음 예시에서는 user-agent
HTTP 헤더 흐름 변수의 값을 User-agent
라는 XML 요소에 삽입합니다.
<AssignMessage name="set-dynamic-content"> <AssignTo createNew="false" type="response"></AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
JSON 페이로드의 경우 다음 예시와 같이 구분 기호가 있는 variablePrefix
및 variableSuffix
속성을 사용하여 변수를 삽입할 수 있습니다.
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
흐름 변수의 전체 목록은 흐름 변수 참조를 확인하세요.
클라우드 출시 버전 16.08.17부터 중괄호를 사용하여 변수를 삽입할 수도 있습니다.
5: 쿼리 매개변수 삭제
다음 예시에서는 요청에서 apikey
쿼리 매개변수를 삭제합니다.
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
사용자 인증에 VerifyAPIKey 정책을 사용할 때 요청 메시지에서 apikey
쿼리 매개변수를 제거하는 것이 좋습니다. 민감한 키 정보가 백엔드 대상으로 전달되지 않도록 하려면 이 작업을 수행합니다.
6: 변수 설정 및 가져오기
다음 예시에서는 세 가지 Assign Message 정책을 사용합니다.
- 요청에 정적 값을 사용하여 세 개의 흐름 변수를 만듭니다.
- 요청 흐름의 두 번째 정책에서 흐름 변수를 동적으로 가져옵니다.
- 응답의 페이로드에 흐름 변수를 설정합니다.
<!-- Policy #1: Set variables in the request --> <AssignMessage continueOnError="false" enabled="true" name="set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
첫 번째 정책에서 <AssignVariable>
요소는 요청에 세 개의 변수를 만들고 설정합니다. 각 <Name>
요소는 변수 이름을 지정하고 <Value>
는 값을 지정합니다.
두 번째 정책은 <AssignVariable>
요소를 사용하여 값을 읽고 새 변수 3개를 만듭니다.
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
두 번째 정책에서 <Ref>
요소는 소스 변수를 참조하고 <Name>
요소는 새 변수의 이름을 지정합니다. <Ref>
요소에서 참조하는 변수에 액세스할 수 없는 경우 <Value>
요소로 지정된 값을 사용할 수 있습니다.
이 정책 집합을 사용해 보려면 다음 안내를 따르세요.
- 요청 흐름에 정책 #1과 #2를 추가합니다. 정책 #2 앞에 정책 #1을 넣어야 합니다.
- 응답 흐름에서 세 번째 정책을 추가합니다.
- 세 번째 정책은
<Set>
요소를 사용하여 응답에 변수를 추가합니다. 다음 예시에서는 Edge가 클라이언트에 반환하는 응답에서 XML 페이로드를 구성합니다.<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<Set>
의 흐름 변수에 액세스하는 구문은 변수를 중괄호로 묶는 것입니다.<Payload>
요소의contentType
속성을 'application/xml'로 설정해야 합니다. - API 프록시에 요청을 보냅니다. 예를 들면 다음과 같습니다.
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
필요한 경우 XML이 올바른 형식의 구조로 표시되도록
xmllint
와 같은 유틸리티를 통해 결과를 파이핑할 수 있습니다.curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
응답 본문은 다음과 같이 표시됩니다.
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7: 서비스 콜아웃 응답 헤더 가져오기
다음 예시에서는 ServiceCallout 정책이 API 프록시 요청에 있으며 콜아웃 응답에 동일한 이름(Set-Cookie
)의 헤더가 여러 개 포함되어 있다고 가정합니다. 서비스 콜아웃의 응답 변수가 기본값 calloutResponse
라고 가정하면 다음 정책에서 두 번째 Set-Cookie
헤더 값을 가져옵니다.
<AssignMessage continueOnError="false" enabled="true" name="get-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
모든 헤더 값을 나열하려면 다음 변수를 대신 사용합니다.
{calloutResponse.header.Set-Cookie.values}
이 참조의 각 하위 요소에는 추가 예시가 있습니다. 더 많은 예시는 GitHub의 AssignMessage 예시를 참조하세요.
하위 요소 참조
이 섹션에서는 <AssignMessage>
의 하위 요소를 설명합니다.
<Add>
<AssignTo>
요소에서 지정하는 요청 또는 응답에 정보를 추가합니다.
<Add>
요소는 원본 메시지에 존재하지 않는 메시지에 새 속성을 추가합니다. 기존 속성 값을 변경하려면 <Set>
요소를 사용합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 복합 유형 |
상위 요소 |
<AssignMessage>
|
하위 요소 |
<FormParams> <Headers> <QueryParams> |
<Add>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
예시 1
다음 예시에서는 <FormParams>
요소를 사용하여 초기 요청에서 세 개의 쿼리 문자열 매개변수 값을 가져와 대상 엔드포인트 요청의 양식 매개변수로 설정합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
예시 2
다음 예시에서는 <Headers>
요소를 사용하여 User-Agent
헤더를 대상 엔드포인트 요청에 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
예시 3
다음 예시에서는 <QueryParams>
요소를 사용하여 정적 값이 있는 단일 쿼리 매개변수를 요청에 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
이 예시에서는 요청 preflow에서 <Add>
를 사용합니다. Trace 도구와 같은 도구에서 결과를 살펴보면 'http://httpbin.org/get'에 대한 요청은 'http://httpbin.org/get?myParam=42'가 됩니다.
<Add>
의 하위 요소는 메시지 템플릿이라는 동적 문자열 대체를 지원합니다.
<FormParams>
(<Add>
의 하위 요소)
요청 메시지에 새 양식 매개변수를 추가합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <FormParam> 요소의 배열 |
상위 요소 |
<Add>
|
하위 요소 |
<FormParam> |
<FormParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </Add> </AssignMessage>
예시 1
다음 예시에서는 단일 양식 매개변수('answer')와 정적 값('42')을 요청에 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"></AssignTo> </AssignMessage>
예시 2
다음 예시에서는 name
쿼리 문자열 매개변수의 값을 가져와서 요청에 양식 매개변수로 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
이 예시에서는 <AssignTo>
로 대상을 지정하지 않습니다. 이 정책은 요청에만 매개변수를 추가합니다.
예시 3
다음 예시에서는 요청에 여러 양식 매개변수를 추가합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
이 예시에서는 원래 요청에서 쿼리 문자열 매개변수를 가져와서 대상 엔드포인트로 전송된 요청에 양식 매개변수로 추가합니다.
Trace 도구를 사용하여 흐름을 살펴볼 수 있습니다. 요청 본문에 쿼리 문자열 매개변수로 원래 전달된 URL 인코딩 양식 데이터가 포함되어 있습니다.
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
다음 기준을 충족하는 경우에만 <FormParams>
를 사용할 수 있습니다.
- HTTP 동사: POST
- 메시지 유형: 요청
- 다음 중 하나(또는 둘 다):
- 양식 데이터: 일부 값 또는 ""(빈 문자열)로 설정합니다. 예를 들어
curl
를 사용하여 요청에-d ""
를 추가합니다. Content-Length
헤더: 0으로 설정합니다(원래 요청에 데이터가 없는 경우, 그렇지 않은 경우에는 바이트 단위의 현재 길이). 예를 들어curl
를 사용하여 요청에-H "Content-Length: 0"
를 추가합니다.
- 양식 데이터: 일부 값 또는 ""(빈 문자열)로 설정합니다. 예를 들어
예를 들면 다음과 같습니다.
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
<FormParams>
를 추가하면 Edge는 메시지를 대상 서비스로 보내기 전에 요청의 Content-Type
헤더를 'application/x-www-form-urlencoded'로 설정합니다.
<Headers>
(<Add>
의 하위 요소)
지정된 요청 또는 응답에 <AssignTo>
요소로 지정된 새 헤더를 추가합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <Header> 요소의 배열 |
상위 요소 |
<Add>
|
하위 요소 |
<Header> |
<Headers>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
예시 1
다음 예시에서는 user-agent
헤더를 요청 메시지에 추가하고 request.user.agent
흐름 변수의 값을 이 헤더에 할당합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(<Add>
의 하위 요소)
요청에 새 쿼리 매개변수를 추가합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <QueryParam> 요소의 배열 |
상위 요소 |
<Add>
|
하위 요소 |
<QueryParam> |
<QueryParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
예시 1
다음 예시에서는 쿼리 매개변수 'myParam'을 요청에 추가하고 여기에 값 '42'를 할당합니다.
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
다음 기준이 충족되는 경우에만 <QueryParams>
를 사용할 수 있습니다.
- HTTP 동사: GET
- 메시지 유형: 요청
또한 <AssignTo>
요소의 type
속성이 요청 메시지인 경우에만 쿼리 매개변수를 설정할 수 있습니다. 응답에 설정해도 효과가 없습니다.
정책(<Add><QueryParams/></Add>
)에서 빈 쿼리 매개변수 배열을 정의하면 정책에서 쿼리 매개변수를 추가하지 않습니다. 이는 <QueryParams>
를 생략하는 것과 같습니다.
<AssignTo>
AssignMessage 정책이 작동하는 객체를 결정합니다. 옵션:
경우에 따라 AssignMessage 정책이 실행되는 객체를 변경할 수 없습니다.
예를 들어 <Add>
또는 <Set>
를 사용하여 응답에서 쿼리 매개변수(<QueryParams>
) 또는 양식 매개변수(<FormParams>
)를 추가하거나 변경할 수 없습니다. 개발자는 요청에서 쿼리 매개변수 및 양식 매개변수만 조작할 수 있습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<AssignMessage>
|
하위 요소 | 없음 |
<AssignTo>
를 지정하지 않으면 정책이 실행되는 위치에 따라 기본 요청 또는 응답에 정책이 적용됩니다. 정책이 요청 흐름에서 실행되면 요청 메시지에 영향을 미칩니다. 응답 흐름에서 실행되는 경우 정책은 기본적으로 응답에 영향을 미칩니다.
<AssignTo>
요소는 다음 문법을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
예시 1
다음 예시에서는 대상이 대상 엔드포인트로 전송될 원래 요청임을 지정합니다.
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
createNew
를 'false'(기본값)로 설정하면 이 예시에서는 새 요청을 만들지 않습니다. 이 정책의 모든 작업은 원래 요청에 영향을 미칩니다.
예시 2
다음 예시에서는 새 요청 객체를 만듭니다.
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
새 요청 또는 응답 객체를 만들면 AssignMessage 정책의 다른 요소 (예: <Add>
, <Set>
, <Set>
)가 해당 새 요청 객체에 적용됩니다.
흐름의 뒷부분에서 다른 정책의 새 요청 객체에 액세스하거나 ServiceCallout 정책을 사용하여 외부 서비스에 새 요청 객체를 전송할 수 있습니다.
예시 3
다음 예시에서는 'MyRequestObject'라는 새 요청 객체를 만듭니다.
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
새 요청 또는 응답 객체를 만들면 AssignMessage 정책의 다른 요소 (예: <Add>
, <Set>
, <Set>
)가 해당 새 요청 객체에 적용됩니다.
흐름의 뒷부분에서 다른 정책의 새 요청 객체에 액세스하거나 ServiceCallout 정책을 사용하여 외부 서비스에 새 요청 객체를 전송할 수 있습니다.
다음 표는 <AssignTo>
의 속성을 설명합니다.
속성 | 설명 | 필수 여부 | 유형 |
---|---|---|---|
createNew |
값을 할당할 때 이 정책이 새 메시지를 만들지 여부를 결정합니다. 'true'일 경우 정책은 'false'인 경우 정책은 다음 두 가지 방법 중 하나로 응답합니다.
|
선택사항 | 불리언 |
transport |
요청 또는 응답 메시지 유형의 전송 유형을 지정합니다. 기본값은 'http'(지원되는 유일한 값)입니다. |
선택 | 문자열 |
type |
createNew 가 'true'인 경우 새 메시지의 유형을 지정합니다. 유효한 값은 'request' 또는 'response'입니다.
기본값은 'request'입니다. 이 속성을 생략하면 Edge는 이 정책이 실행되는 흐름의 위치에 따라 요청 또는 응답을 작성합니다. |
선택사항 | 문자열 |
<AssignVariable>
대상 흐름 변수 (예: AssignMessage 정책에 의해 값이 설정된 변수)에 값을 할당합니다. 흐름 변수가 없으면 <AssignVariable>
가 변수를 만듭니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 복합 유형 |
상위 요소 |
<AssignMessage>
|
하위 요소 |
<Name> (필수)<Ref> <Template> <Value> |
대상 흐름 변수에 할당하는 값은 다음 중 하나일 수 있습니다.
- 리터럴 문자열:
<Value>
하위 요소를 사용하여 대상 흐름 변수의 리터럴 문자열 값을 지정합니다. - 흐름 변수:
<Ref>
하위 요소를 사용하여 대상 흐름 변수의 기존 흐름 변수 값을 지정합니다. 소스로 사용할 수 있는 흐름 변수의 전체 목록은 흐름 변수 참조를 확인하세요. - 메시지 템플릿:
<Template>
하위 요소를 사용하여 대상 흐름 변수의 메시지 템플릿을 지정합니다.
<AssignVariable>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
<Ref>
요소를 사용하여 소스 변수를 지정합니다. <Ref>
에서 참조되는 변수에 액세스할 수 없는 경우 Edge는 <Value>
요소로 지정된 값을 사용합니다. <Template>
을 정의하면 이는 다른 하위 요소보다 우선합니다.
예시 1
다음 예시에서는 새 변수 myvar
의 값을 리터럴 값 '42'로 설정합니다.
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
예시 2
다음 예시에서는 흐름 변수 request.header.user-agent
값을 대상 흐름 변수 myvar
에 지정하고 쿼리 매개변수 country
값을 대상 흐름 변수 Country
에 지정합니다.
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
할당 중 하나가 실패하면 Edge는 대신 대상 흐름 변수에 'ErrorOnCopy' 값을 할당합니다.
myvar
또는 Country
흐름 변수가 없으면 <AssignVariable>
은 변수를 생성합니다.
예시 3
다음 예시에서는 <Template>
하위 요소를 사용하여 두 개의 컨텍스트 변수 사이를 리터럴 문자열(하이픈)로 연결합니다.
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<AssignVariable>
의 일반적인 용도는 요청과 함께 전달할 수 있는 쿼리 매개변수, 헤더, 기타 값의 기본값을 설정하는 것입니다. 이 작업은 <Ref>
및 <Value>
하위 요소의 조합으로 수행됩니다. 자세한 내용은 <Ref>
의 예시를 참조하세요.
<Name>
(<AssignVariable>
의 하위 요소)
대상 흐름 변수의 이름을 지정합니다 (예: AssignMessage 정책에 의해 값이 설정된 변수). <AssignVariable>
에 지정된 변수가 없으면 정책이 해당 이름으로 변수를 만듭니다.
기본값 | 해당 사항 없음 |
필수 여부 | 필수 |
유형 | 문자열 |
상위 요소 |
<AssignVariable>
|
하위 요소 | 없음 |
<Name>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
예시 1
다음 예시에서는 대상 변수를 myvar
로 지정하고 리터럴 값 '42'로 설정합니다.
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
myvar
가 없는 경우 <AssignVariable>
이 만듭니다.
<Ref>
(<AssignVariable>
의 하위 요소)
할당 소스를 흐름 변수로 지정합니다. 흐름 변수는 사전 정의된 흐름 변수(흐름 변수 참조에 나열됨) 중 하나이거나 사용자가 생성한 커스텀 흐름 변수일 수 있습니다.
<Ref>
값은 항상 흐름 변수로 해석됩니다. 값으로 리터럴 문자열을 지정할 수 없습니다. 리터럴 문자열 값을 할당하려면 <Value>
요소를 대신 사용하세요.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<AssignVariable>
|
하위 요소 | 없음 |
<Ref>
를 사용하여 흐름 변수를 지정할 때는 일반적으로 흐름 변수를 참조하는 데 사용하는 대괄호 '{}'를 생략합니다. 예를 들어 새 변수의 값을 client.host
흐름 변수의 값으로 설정하려면 다음 안내를 따르세요.
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
대상 흐름 변수의 기본값을 정의하려면 <Value>
를 <Ref>
와 함께 사용합니다. <Ref>
로 지정된 흐름 변수가 존재하지 않거나 읽을 수 없거나 null인 경우 Edge는 <Value>
값을 대상 흐름 변수에 대신 할당합니다.
<Ref>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
예시 1
다음 예시에서는 흐름 변수 request.header.user-agent
값을 대상 흐름 변수 myvar
에 할당하고 쿼리 매개변수 country
값을 Country
변수에 할당합니다.
<AssignMessage name="assignvariable-4"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
이 예시에서 Edge에는 두 할당에 대해 지정된 기본값 (또는 대체 값)이 없습니다.
예 2
다음 예시에서는 흐름 변수 request.header.user-agent
값을 대상 흐름 변수 myvar
에 할당하고 쿼리 매개변수 country
값을 Country
변수에 할당합니다.
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
이 예시에서 request.header.user-agent
흐름 변수 또는 Country
쿼리 매개변수의 값이 null이거나 읽을 수 없거나 형식이 잘못된 경우 Edge는 'ErrorOnCopy' 값을 새 변수에 할당합니다.
예시 3
<AssignVariable>
의 일반적인 사용 사례는 요청과 함께 전달할 수 있는 쿼리 매개변수, 헤더, 기타 값의 기본값을 설정하는 것입니다. 예를 들어 요청에 'w'라는 단일 쿼리 매개변수를 사용하는 Weather API 프록시를 만듭니다. 이 매개변수에는 날씨를 표시할 도시의 ID가 포함됩니다. 요청 URL의 형식은 다음과 같습니다.
http://myCO.com/v1/weather/forecastrss?w=city_ID
'w'의 기본값을 정의하려면 다음과 같이 AssignMessage 정책을 만듭니다.
<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3"> <AssignTo createNew="false" transport="http" type="request"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>request.queryparam.w</Name> <Ref>request.queryparam.w</Ref> <Value>12797282</Value> </AssignVariable> </AssignMessage>
이 예시에서 <AssignVariable>
는 request.queryparam.w
값을 가져와서 자체에 할당합니다. 흐름 변수가 null인 경우 요청에서 'w' 쿼리 매개변수가 생략된 경우에 이 예시에서는 <Value>
요소의 기본값을 사용합니다. 따라서 이 API 프록시에 'w' 쿼리 매개변수를 생략하는 요청을 할 수 있습니다.
http://myCO.com/v1/weather/forecastrss
...그리고 API 프록시가 유효한 결과를 반환하도록 합니다.
<Value>
를 사용할 때와 달리 <Ref>
의 값은 request
, response
, target
객체의 속성과 같은 흐름 변수여야 합니다. 이 값은 생성한 커스텀 흐름 변수일 수도 있습니다.
<Ref>
값에 존재하지 않는 흐름 변수를 지정하고 <IgnoreUnresolvedVariables>
값이 'true'인 경우 Edge에서 오류가 발생합니다.
<Template>
(<AssignVariable>
의 하위 요소)
메시지 템플릿을 지정합니다. 메시지 템플릿을 사용하면 정책이 실행될 때 변수 문자열 대체를 수행할 수 있으며 리터럴 문자열을 중괄호로 묶인 변수 이름과 결합할 수 있습니다. 또한 메시지 템플릿은 이스케이프 및 케이스 변환과 같은 함수를 지원합니다.
ref
속성을 사용하여 변수 값이 메시지 템플릿인 흐름 변수를 지정합니다. 예를 들어 메시지 템플릿을 개발자 앱의 커스텀 속성으로 저장할 수 있습니다. Edge에서 추가 정책을 통해 API 키 또는 보안 토큰을 확인한 후 개발자 앱을 식별하면 <AssignVariable>
요소는 보안 정책에서 흐름 변수로 사용할 수 있는 앱의 커스텀 속성에서 메시지 템플릿을 사용할 수 있습니다. 다음 예시에서는 API 호출을 수행하는 개발자 앱의 message_template
이라는 커스텀 속성에서 메시지 템플릿을 사용할 수 있다고 가정합니다. 여기서 VerifyAPIKey 정책은 앱의 API 키를 확인하는 데 사용되었습니다.
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<AssignVariable>
|
하위 요소 | 없음 |
<Template>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
예시 1
다음 예시에서는 메시지 템플릿 문법을 사용하여 두 개의 컨텍스트 변수 사이를 리터럴 문자열(하이픈)로 연결합니다.
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
예시 2
다음 예시에서는 흐름 변수를 지정합니다. 여기서 변수 값은 사전 정의된 메시지 템플릿입니다. 정책을 수정할 필요 없이 런타임에 사전 정의된 템플릿을 삽입하려면 이 옵션을 사용하세요.
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
예시 3
다음 예시에서는 흐름 변수와 텍스트 값을 지정합니다. 이 경우 참조된 변수가 null이 아닌 경우 해당 값이 템플릿으로 사용됩니다. 참조된 값이 null이면 텍스트 값(이 경우 {system.uuid}-{messageid}
)이 템플릿으로 사용됩니다. 이 패턴은 동적으로 설정된 값으로 기본 템플릿(텍스트 부분)을 재정의하려는 경우 '재정의' 값을 제공하는 데 유용합니다. 예를 들어 조건문은 키-값 맵에서 값을 가져와 참조된 변수를 해당 값으로 설정할 수 있습니다.
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_variable'>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<Value>
(<AssignVariable>
의 하위 요소)
<AssignVariable>
로 설정된 대상 흐름 변수의 값을 정의합니다. 값은 항상 리터럴 문자열로 해석됩니다. 값을 대괄호('{}')로 래핑하더라도 흐름 변수를 값으로 사용할 수 없습니다. 흐름 변수를 사용하려면 <Ref>
를 대신 사용하세요.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<AssignVariable>
|
하위 요소 | 없음 |
<Ref>
요소와 함께 사용하면 <Value>
가 기본(또는 대체) 값 역할을 합니다. <Ref>
를 지정하지 않거나 확인할 수 없거나 null인 경우 <Value>
값이 사용됩니다.
<Value>
요소는 다음 문법을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
예시 1
다음 예시에서는 대상 흐름 변수 myvar
의 값을 리터럴 값 '42'로 설정합니다.
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
예시 2
다음 예시에서는 흐름 변수 request.header.user-agent
값을 흐름 변수 myvar
에 할당하고 쿼리 매개변수 country
값을 Country
변수에 할당합니다.
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
할당 작업 중 하나가 실패하는 경우 <AssignVariable>
는 대신 대상 흐름 변수에 'ErrorOnCopy' 값을 할당합니다.
<Copy>
source
속성으로 지정된 메시지에서 <AssignTo>
요소로 지정된 메시지로 값을 복사합니다. <AssignTo>
로 대상을 지정하지 않으면 이 정책은 이 정책이 실행되는 흐름의 위치에 따라 요청 또는 응답에 값을 복사합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<AssignMessage>
|
하위 요소 |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
<Copy>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name" >
<Copy source="[request|response]">
<!-- Can also be an empty array (<FormParams/>) -->
<FormParams>
<FormParam name="formparam_name">formparam_value</FormParam>
...
</FormParams>
<!-- Can also be an empty array (<Headers/>) -->
<Headers>
<Header name="header_name">header_value</Header>
...
</Headers>
<Path>[false|true]</Path>
<Payload>[false|true]</Payload>
<!-- Can also be an empty array (<QueryParams/>) -->
<QueryParams>
<QueryParam name="queryparam_name">queryparam_value</QueryParam>
...
</QueryParams>
<ReasonPhrase>[false|true]</ReasonPhrase>
<StatusCode>[false|true]</StatusCode>
<Verb>[false|true]</Verb>
<Version>[false|true]</Version>
</Copy>
<!-- Used as the destination for the <Copy>
values -->
<AssignTo createNew="[true|false]" transport="http"
type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
예시 1
다음 예시에서는 헤더, 세 가지 양식 매개변수, 경로, 모든 쿼리 매개변수를 요청에서 새 커스텀 요청으로 복사합니다.
<AssignMessage continueOnError="false" enabled="true" name="copy-1"> <Copy source="request"> <Headers> <Header name="Header_Name_1">Header value 1</Header> </Headers> <FormParams> <FormParam name="Form_Param_Name_1">Form param value 1</FormParam> <FormParam name="Form_Param_Name_2">Form param value 1</FormParam> <FormParam name="Form_Param_Name_3">Form param value 1</FormParam> </FormParams> <Payload>false</Payload> <Path>true</Path> <QueryParams/> <ReasonPhrase>false</ReasonPhrase> <StatusCode>false</StatusCode> <Verb>false</Verb> <Version>false</Version> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
<Copy>
요소에는 다음과 같은 속성이 있습니다.
속성 | 설명 | 필수 여부 | 유형 |
---|---|---|---|
source |
사본의 소스 객체를 지정합니다.
|
선택 | 문자열 |
<FormParams>
(<Copy>
의 하위 요소)
<Copy>
요소의 source
속성으로 지정된 요청에서 <AssignTo>
요소로 지정된 요청으로 양식 매개변수를 복사합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <FormParam> 요소의 배열 또는 빈 배열 |
상위 요소 |
<Copy>
|
하위 요소 |
<FormParam> |
<FormParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Copy> </AssignMessage>
예시 1
다음 예시에서는 단일 양식 매개변수를 요청에서 커스텀 요청 'MyCustomRequest'로 복사합니다.
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 2
다음 예시에서는 모든 양식 매개변수를 커스텀 요청 'MyCustomRequest'에 복사합니다.
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 3
다음 예시에서는 세 가지 양식 매개변수를 커스텀 요청 'MyCustomRequest'에 복사합니다.
<AssignMessage name="copy-formparams-3"> <Copy source="request"> <FormParams> <FormParam name="paramName1"/> <FormParam name="paramName2"/> <FormParam name="paramName3"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 4
이름이 같은 양식 매개변수가 여러 개 있는 경우 다음 구문을 사용하세요.
<AssignMessage name="copy-formparams-4"> <Copy source="request"> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
이 예시에서는 'f1', 'f2', 'f3'의 두 번째 값을 복사합니다. 'f3'에 값이 하나만 있는 경우 복사되지 않습니다.
다음 기준이 충족되는 경우에만 <FormParams>
를 사용할 수 있습니다.
- HTTP 동사: POST
- 메시지 유형: 응답
- 다음 중 하나(또는 둘 다):
- 양식 데이터: 일부 값 또는 ""(빈 문자열)로 설정합니다. 예를 들어
curl
를 사용하여 요청에-d ""
를 추가합니다. Content-Length
헤더: 0으로 설정합니다(원래 요청에 데이터가 없는 경우, 그렇지 않은 경우에는 현재 길이). 예를 들어curl
를 사용하여 요청에-H "Content-Length: 0"
를 추가합니다.
- 양식 데이터: 일부 값 또는 ""(빈 문자열)로 설정합니다. 예를 들어
<FormParams>
를 복사하면 <Copy>
는 메시지를 대상 서비스로 보내기 전에 메시지의 Content-Type
을 'application/x-www-form-urlencoded'로 설정합니다.
<Headers>
(<Copy>
의 하위 요소)
<Copy>
요소의 source
속성으로 지정된 요청 또는 응답 메시지에서 <AssignTo>
요소로 지정된 요청 또는 응답 메시지로 HTTP 헤더를 복사합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <Header> 요소의 배열 또는 빈 배열 |
상위 요소 |
<Copy>
|
하위 요소 |
<Header> |
<Headers>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Copy> </AssignMessage>
예시 1
다음 예시에서는 user-agent
헤더를 요청에서 새로운 커스텀 요청 객체로 복사합니다.
<AssignMessage name="copy-headers-1"> <Copy source="request"> <Headers> <Header name="user-agent"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 2
모든 헤더를 복사하려면 다음 예시와 같이 빈 <Headers>
요소를 사용합니다.
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 3
이름이 같은 헤더가 여러 개 있는 경우 다음 구문을 사용합니다.
<AssignMessage name="copy-headers-3"> <Copy source="request"> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
이 예시에서는 'h1', 'h2', 'h3'의 두 번째 값을 복사합니다. 'h3'에 값이 하나만 있는 경우 복사되지 않습니다.
<Path>
(<Copy>
의 하위 요소)
경로를 소스 요청에서 대상 요청으로 복사할지 여부를 결정합니다. 이 요소는 응답에 영향을 미치지 않습니다.
'true'인 경우 이 정책은 <Copy>
요소의 source
속성으로 지정된 요청 메시지에서 <AssignTo>
요소로 지정된 요청 메시지로 경로를 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<Path>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
예 1
다음 예시에서는 AssignMessage 정책이 소스 요청에서 새 커스텀 요청 객체로 경로를 복사해야 함을 나타냅니다.
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
다음 기준을 충족하는 경우에만 <Path>
를 사용할 수 있습니다.
- 메시지 유형: 요청
<Payload>
(<Copy>
의 하위 요소)
페이로드를 소스에서 대상으로 복사해야 하는지 여부를 결정합니다. 소스와 대상은 요청 또는 응답일 수 있습니다.
'true'인 경우 이 정책은 <Copy>
요소의 source
속성에 지정된 메시지에서 <AssignTo>
요소에 지정된 메시지로 페이로드를 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<Payload>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
예시 1
다음 예시에서는 요청 페이로드가 요청에서 응답으로 복사되도록 <Payload>
를 'true'로 설정합니다.
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(<Copy>
의 하위 요소)
<Copy>
요소의 source
속성으로 지정된 요청에서 <AssignTo>
요소로 지정된 요청으로 쿼리 문자열 매개변수를 복사합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <QueryParam> 요소의 배열 또는 빈 배열 |
상위 요소 |
<QueryParam>
|
하위 요소 | 없음 |
<QueryParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Copy> </AssignMessage>
예시 1
다음 예시에서는 요청의 'my_param' 쿼리 매개변수를 새 커스텀 요청 객체로 복사합니다.
<AssignMessage name="copy-queryparams-1"> <Copy source="request"> <QueryParams> <QueryParam name="my_param"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 2
다음 예시에서는 요청의 모든 쿼리 매개변수를 새 커스텀 요청 객체로 복사합니다.
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
예시 3
이름이 같은 쿼리 매개변수가 여러 개 있는 경우 다음 구문을 사용하세요.
<AssignMessage name="copy-queryparams-3"> <Copy source="request"> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
이 예시에서는 'qp1', 'qp2', 'qp3'의 두 번째 값을 복사합니다. 'qp3'에 값이 하나만 있는 경우 복사되지 않습니다.
다음 기준이 충족되는 경우에만 <QueryParams>
를 사용할 수 있습니다.
- HTTP 동사: GET
- 메시지 유형: 요청
<ReasonPhrase>
(<Copy>
의 하위 요소)
이유 구문을 소스 응답에서 대상 응답으로 복사해야 하는지 여부를 결정합니다. 이 요소는 요청에 영향을 미치지 않습니다.
'true'인 경우 이 정책은 <Copy>
요소의 source
속성으로 지정된 응답에서 <AssignTo>
요소로 지정된 응답으로 ReasonPhrase
을 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<ReasonPhrase>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
예시 1
다음 예시에서는 <ReasonPhrase>
를 'true'로 설정하여 <Copy>
가 이유 구문을 기본 응답에서 커스텀 응답 객체로 복사합니다.
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
다음 기준이 충족되는 경우에만 <ReasonPhrase>
를 사용할 수 있습니다.
- 메시지 유형: 응답
<StatusCode>
(<Copy>
의 하위 요소)
상태 코드를 소스 응답에서 대상 응답으로 복사할지 여부를 결정합니다. 이 요소는 요청에 영향을 미치지 않습니다.
'true'인 경우 이 정책은 <Copy>
요소의 source
속성으로 지정된 응답 메시지에서 <AssignTo>
요소로 지정된 응답 메시지로 상태 코드를 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<StatusCode>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
예시 1
다음 예시에서는 <StatusCode>
를 'true'로 설정하여 상태 코드를 기본 응답 객체에서 새 커스텀 응답 객체로 복사합니다.
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
다음 기준이 충족되는 경우에만 <StatusCode>
를 사용할 수 있습니다.
- 메시지 유형: 응답
<StatusCode>
의 일반적인 용도는 <AssignTo>
의 createNew
속성이 'true'로 설정되어 있을 때 프록시 응답이 대상으로부터 수신한 응답과 동일한 상태를 가지는 것을 확인하는 것입니다.
<Verb>
(<Copy>
의 하위 요소)
HTTP 동사를 원래 요청에서 대상 요청으로 복사할지 여부를 결정합니다. 이 요소는 응답에 영향을 미치지 않습니다.
'true'인 경우 <Copy>
요소의 source
속성에 있는 동사를 <AssignTo>
요소에 지정된 요청으로 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<Verb>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
예시 1
다음 예시에서는 <Verb>
를 'true'로 설정하여 동사를 기본 요청에서 새 커스텀 요청으로 복사합니다.
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
다음 기준을 충족하는 경우에만 <Verb>
를 사용할 수 있습니다.
- 메시지 유형: 요청
<Version>
(<Copy>
의 하위 요소)
HTTP 버전을 원래 요청에서 대상 요청으로 복사할지 여부를 결정합니다. 이 요소는 응답에 영향을 미치지 않습니다.
'true'인 경우 <Copy>
요소의 source
속성에 있는 HTTP 버전을 <AssignTo>
요소에서 지정된 객체에 복사합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Copy>
|
하위 요소 | 없음 |
<Version>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
예시 1
다음 예시에서는 요청에서 <Version>
을 'true'로 설정하여 버전을 기본 요청 객체에서 새 커스텀 요청 객체로 복사합니다.
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
다음 기준이 충족되는 경우에만 <Version>
를 사용할 수 있습니다.
- 메시지 유형: 요청
<DisplayName>
name
속성 외에 이 요소를 사용하여 관리 UI 프록시 편집기에서 자연스러운 다른 이름으로 정책의 라벨을 지정합니다.
<DisplayName>
요소는 모든 정책에 공통으로 적용됩니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항. <DisplayName> 을 생략하면 정책의 name 속성 값이 사용됩니다. |
유형 | 문자열 |
상위 요소 | <PolicyElement> |
하위 요소 | 없음 |
<DisplayName>
요소는 다음 구문을 사용합니다.
구문
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
예
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName>
요소에 속성 또는 하위 요소가 없습니다.
<IgnoreUnresolvedVariables>
해결되지 않은 변수가 발생하면 처리를 중지할지 여부를 결정합니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<AssignMessage>
|
하위 요소 | 없음 |
확인되지 않은 변수를 무시하고 계속 처리하려면 true
로 설정합니다. 그렇지 않으면 false
로 설정합니다. 기본값은 false
입니다.
<IgnoreUnresolvedVariables>
를 true
로 설정하는 것은 변수의 값을 설정하고 가져온다는 점에서 <AssignMessage>
의 continueOnError
를 true
로 설정하는 것과 다릅니다. continueOnError
를 true
로 설정하면 Edge는 변수를 사용할 때 발생한 오류뿐만 아니라 모든 오류를 무시합니다.
<IgnoreUnresolvedVariables>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
예시 1
다음 예시에서는 <IgnoreUnresolvedVariables>
를 'true'로 설정합니다.
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
메시지에서 헤더, 쿼리 매개변수, 양식 매개변수 또는 메시지 페이로드를 삭제합니다. 메시지는 요청 또는 응답일 수 있습니다. <AssignTo>
요소를 사용하여 <Remove>
가 작동하는 메시지를 지정합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 복합 유형 |
상위 요소 |
<AssignMessage>
|
하위 요소 |
<FormParams> <Headers> <Payload> <QueryParams> |
<Remove>
의 일반적인 사용 사례는 수신 요청 객체에서 민감한 정보가 포함된 쿼리 매개변수를 삭제하여 백엔드 서버에 전달하지 않도록 하는 것입니다.
<Remove>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
예시 1
다음 예시에서는 응답에서 메시지 본문을 삭제합니다.
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
응답 흐름에서 이 정책은 응답의 본문을 삭제하여 HTTP 헤더만 클라이언트에 반환합니다.
예시 2
다음 예시에서는 들어오는 요청에서 모든 양식 매개변수와 쿼리 매개변수를 삭제합니다.
<AssignMessage continueOnError="false" enabled="true" name="remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<FormParams>
(<Remove>
의 하위 요소)
요청에서 지정된 양식 매개변수를 삭제합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <FormParam> 요소의 배열 또는 빈 배열 |
상위 요소 |
<Remove>
|
하위 요소 |
<FormParam> |
<FormParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Remove> </AssignMessage>
예시 1
다음 예시에서는 요청에서 세 개의 양식 매개변수를 삭제합니다.
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
예시 2
다음 예시에서는 요청에서 모든 양식 매개변수를 삭제합니다.
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
예시 3
이름이 같은 양식 매개변수가 여러 개 있는 경우 다음 구문을 사용하세요.
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
이 예시에서는 'f1', 'f2', 'f3'의 두 번째 값을 삭제합니다. 'f3'에 값이 하나만 있는 경우 삭제되지 않습니다.
다음 기준이 충족되는 경우에만 <FormParams>
를 사용할 수 있습니다.
- 메시지 유형: 요청
Content-Type
: 'application/x-www-form-urlencoded'
<Headers>
(<Remove>
의 하위 요소)
<AssignTo>
요소로 지정된 요청 또는 응답에서 지정된 HTTP 헤더를 삭제합니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <Header> 요소의 배열 또는 빈 배열 |
상위 요소 |
<Remove>
|
하위 요소 |
<Header> |
<Headers>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Remove> </AssignMessage>
예시 1
다음 예시에서는 요청에서 user-agent
헤더를 삭제합니다.
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
예시 2
다음 예시에서는 요청에서 모든 헤더를 삭제합니다.
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
예시 3
이름이 같은 헤더가 여러 개 있는 경우 다음 구문을 사용합니다.
<AssignMessage name="remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
이 예시에서는 요청에서 'h1', 'h2', 'h3'의 두 번째 값을 삭제합니다. 'h3'에 값이 하나만 있으면 삭제되지 않습니다.
<Payload>
(<Remove>
의 하위 요소)
<Remove>
는 <AssignTo>
요소로 지정된 요청 또는 응답에서 페이로드를 삭제할지 여부를 결정합니다. 페이로드를 삭제하려면 'true'로 설정합니다. 그렇지 않으면 'false'로 설정합니다. 기본값은 'false' 입니다.
기본값 | 거짓 |
필수 여부 | 선택사항 |
유형 | 불리언 |
상위 요소 |
<Remove>
|
하위 요소 | 없음 |
<Payload>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
예시 1
다음 예시에서는 요청 페이로드가 삭제되도록 <Payload>
를 'true'로 설정합니다.
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(<Remove>
의 하위 요소)
요청에서 지정된 쿼리 매개변수를 삭제합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <QueryParam> 요소의 배열 또는 빈 배열 |
상위 요소 |
<Remove>
|
하위 요소 |
<QueryParam> |
<QueryParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
예시 1
다음 예시에서는 요청에서 단일 쿼리 매개변수를 삭제합니다.
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
예시 2
다음 예시에서는 요청에서 모든 쿼리 매개변수를 삭제합니다.
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
예시 3
이름이 같은 쿼리 매개변수가 여러 개 있는 경우 다음 구문을 사용하세요.
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
이 예시에서는 요청에서 'qp1', 'qp2', 'qp3'의 두 번째 값을 삭제합니다. 'qp3'에 값이 하나만 있으면 삭제되지 않습니다.
예시 4
다음 예시에서는 요청에서 apikey
쿼리 매개변수를 삭제합니다.
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
다음 기준이 충족되는 경우에만 <QueryParams>
를 사용할 수 있습니다.
- HTTP 동사: GET
- 메시지 유형: 요청
<Set>
<AssignTo>
요소로 지정된 요청 또는 응답 메시지의 정보를 설정합니다. <Set>
는 원본 메시지에 이미 있는 헤더 또는 매개변수를 덮어씁니다. 새 헤더 또는 매개변수를 만들려면 <Add>
요소를 대신 사용하세요.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 복합 유형 |
상위 요소 |
<AssignMessage>
|
하위 요소 |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
<Set>
요소는 다음 문법을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
예시 1
다음 예시에서는 <Set>
요소를 보여줍니다.
<AssignMessage continueOnError="false" enabled="true" name="set-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> <QueryParams> <QueryParam name="name">{request.header.name}</QueryParam> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> <!-- <Verb>GET</Verb> --> <Payload contentType="text/plain">42</Payload> <Path/> <ReasonPhrase>Bad request</ReasonPhrase> <StatusCode>400</StatusCode> <Verb>POST</Verb> <Verb>{my_variable}</Verb> <Version>1.1</Version> </Set> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<FormParams>
(<Set>
의 하위 요소)
요청에서 기존 양식 매개변수를 덮어쓰고 이 요소로 지정하는 새 값으로 대체합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <FormParam> 요소의 배열 |
상위 요소 |
<Set>
|
하위 요소 |
<FormParam> |
<FormParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
예시 1
다음 예시에서는 'myparam'이라는 양식 매개변수를 새 커스텀 요청의 request.header.myparam
변수 값으로 설정합니다.
<AssignMessage name="set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
다음 기준이 충족되는 경우에만 <FormParams>
를 사용할 수 있습니다.
- HTTP 동사: POST
- 메시지 유형: 요청
정책(<Add><FormParams/></Add>
)에서 빈 양식 매개변수를 정의하면 정책은 양식 매개변수를 추가하지 않습니다. 이는 <FormParams>
를 생략하는 것과 같습니다.
<Set>
는 메시지의 Content-Type
을 대상 엔드포인트로 보내기 전에 'application/x-www-form-urlencoded'로 변경합니다.
<Headers>
(<Set>
의 하위 요소)
<AssignTo>
요소로 지정된 요청 또는 응답에서 기존 HTTP 헤더를 덮어씁니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <Header> 요소의 배열 |
상위 요소 |
<Set>
|
하위 요소 |
<Header> |
<Headers>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
예시 1
다음 예시에서는 user-agent
헤더를 request.header.user-agent
변수의 값으로 설정합니다.
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
정책(<Add><Headers/></Add>
)에서 빈 헤더를 정의하는 경우 정책은 헤더를 추가하지 않습니다. 이는 <Headers>
를 생략하는 것과 같습니다.
<Path>
(<Set>
의 하위 요소)
<Payload>
(<Set>
의 하위 요소)
<AssignTo>
요소에서 지정된 요청 또는 응답의 메시지 본문을 정의합니다. 페이로드는 일반 텍스트, JSON, XML 등 모든 유효한 콘텐츠 유형이 될 수 있습니다.
기본값 | 빈 문자열 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<Set>
|
하위 요소 | 없음 |
<Payload>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
예시 1
다음 예시에서는 일반 텍스트 페이로드를 설정합니다.
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
예시 2
다음 예시에서는 JSON 페이로드를 설정합니다.
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
예시 3
다음 예시에서는 중괄호로 변수 이름을 래핑하여 변수 값을 페이로드에 삽입합니다.
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
이전 버전의 Apigee Edge(예: 클라우드 출시 버전 16.08.17 이전)에서는 중괄호를 사용하여 JSON 페이로드 내의 변수 참조를 표시할 수 없었습니다. 이러한 출시 버전에서는 다음과 같이 구분 기호 문자를 지정하고 변수 이름을 래핑하기 위해 variablePrefix
및 variableSuffix
속성을 사용해야 했습니다.
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
이 이전 문법은 여전히 작동합니다.
예 4
<Payload>
의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 AssignMessage 정책은 중괄호로 묶인 변수를 런타임에 참조된 변수 값으로 대체합니다.
다음 예시에서는 중괄호 구문을 사용하여 페이로드의 일부를 변수 값으로 설정합니다.
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </root> </Payload> </Set> </AssignMessage>
다음 표는 <Payload>
의 속성을 설명합니다.
속성 | 설명 | 접속 상태 | 유형 |
---|---|---|---|
contentType |
이 속성을 지정하면 |
선택사항 | 문자열 |
variablePrefix |
필요한 경우 흐름 변수의 선행 구분 기호를 지정합니다. 기본값은 '{'입니다. 자세한 내용은 흐름 변수 참조를 참조하세요. | 선택사항 | char |
variableSuffix |
필요한 경우 흐름 변수의 후행 구분 기호를 지정합니다. 기본값은 '}'입니다. 자세한 내용은 흐름 변수 참조를 참조하세요. | 선택사항 | char |
<QueryParams>
(<Set>
의 하위 요소)
요청의 기존 쿼리 매개변수를 새 값으로 덮어씁니다. 이 요소는 응답에 영향을 주지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | <QueryParam> 요소의 배열 |
상위 요소 |
<Set>
|
하위 요소 |
<QueryParam> |
<QueryParams>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
예시 1
다음 예시에서는 'address' 쿼리 매개변수를 request.header.address
변수 값으로 설정합니다.
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
다음 기준이 충족되는 경우에만 <QueryParams>
를 사용할 수 있습니다.
- HTTP 동사: GET
- 메시지 유형: 요청
정책(<Set><QueryParams/></Set>
)에 빈 쿼리 매개변수를 정의하면 정책에서 쿼리 매개변수가 설정되지 않습니다. 이는 <QueryParams>
를 생략하는 것과 같습니다.
<ReasonPhrase>
(<Set>
의 하위 요소)
응답에서 이유 구문을 설정합니다. 이는 일반적으로 <StatusCode>
와 함께 디버깅하기 위해 수행됩니다. 이 요소는 요청에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 |
상위 요소 |
<Set>
|
하위 요소 | 없음 |
<ReasonPhrase>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
예시 1
다음 예시에서는 간단한 이유 구문을 정의합니다.
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
예시 2
<ReasonPhrase>
의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 다음 예시와 같이 중괄호로 묶인 변수 이름은 런타임 시 참조된 변수 값으로 대체됩니다.
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
다음 기준을 충족하는 경우에만 <ReasonPhrase>
를 사용할 수 있습니다.
- 메시지 유형: 응답
<StatusCode>
(<Set>
의 하위 요소)
응답에 상태 코드를 설정합니다. 이 요소는 요청에 영향을 미치지 않습니다.
기본값 | '200'(<AssignTo> 의 createNew 속성이 'true'로 설정된 경우) |
필수 여부 | 선택사항 |
유형 | 문자열 또는 variable |
상위 요소 |
<Set>
|
하위 요소 | 없음 |
<StatusCode>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
예시 1
다음 예시에서는 간단한 상태 코드를 설정합니다.
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
예시 2
<StatusCode>
의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 다음 예시와 같이 중괄호로 묶인 변수 이름은 런타임 시 참조된 변수 값으로 대체됩니다.
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
다음 기준을 충족하는 경우에만 <StatusCode>
를 사용할 수 있습니다.
- 메시지 유형: 응답
<Verb>
(<Set>
의 하위 요소)
요청에 HTTP 동사를 설정합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 또는 variable |
상위 요소 |
<Set>
|
하위 요소 | 없음 |
<Verb>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
예시 1
다음 예시에서는 요청에 간단한 동사를 설정합니다.
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
예시 2
<Verb>
의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 중괄호로 묶인 변수 이름이 런타임 시 참조된 변수의 값으로 대체됩니다.
다음 예시에서는 변수를 사용하여 동사를 채웁니다.
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
다음 기준을 충족하는 경우에만 <Verb>
를 사용할 수 있습니다.
- 메시지 유형: 요청
<Version>
(<Set>
의 하위 요소)
요청에 HTTP 버전을 설정합니다. 이 요소는 응답에 영향을 미치지 않습니다.
기본값 | 해당 사항 없음 |
필수 여부 | 선택사항 |
유형 | 문자열 또는 variable |
상위 요소 |
<Set>
|
하위 요소 | 없음 |
<Version>
요소는 다음 구문을 사용합니다.
구문
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
예시 1
다음 예시에서는 버전 번호를 '1.1'로 설정합니다.
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
예시 2
다음은 중괄호 안의 변수를 사용하여 버전 번호를 설정합니다.
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
<Version>
의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 중괄호로 묶인 변수 이름이 런타임 시 참조된 변수의 값으로 대체됩니다.
다음 기준을 충족하는 경우에만 <Version>
를 사용할 수 있습니다.
- 메시지 유형: 요청
커스텀 요청 메시지 만들기
AssignMessage 정책을 사용하여 커스텀 요청 메시지를 만들 수 있습니다. 커스텀 요청을 만든 후 다음과 같은 방법으로 사용할 수 있습니다.
- 다른 정책에서 해당 변수에 액세스
- 외부 서비스에 전달
커스텀 요청 메시지를 만들려면 AssignMessage 정책의 <AssignTo>
요소를 사용합니다. createNew
를 'true'로 설정하고 아래 예시와 같이 요소의 본문에 새 메시지의 이름을 지정합니다.
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
기본적으로 Edge는 맞춤 요청 메시지를 사용하지 않습니다. 커스텀 요청 메시지 생성 후 Edge는 원래 요청으로 흐름을 계속 진행합니다. 커스텀 요청을 사용하려면 커스텀 요청을 외부 서비스에 전달할 수 있는 ServiceCallout 정책과 같은 정책을 프록시에 추가합니다.
다음 예시에서는 커스텀 요청 메시지를 만듭니다.
예시 1
다음 예시에서는 Assign Message으로 커스텀 요청 객체를 만듭니다.
<AssignMessage name="AssignMessage-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Copy> <Headers> <Header name="user-agent"/> </Headers> </Copy> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
예시:
- 'MyCustomRequest'라는 새 요청 메시지 객체를 만듭니다.
- MyCustomRequest에서 이 정책은 다음을 실행합니다.
- 수신되는 요청에서
user-agent
HTTP 헤더 값을 새 메시지로 복사합니다.<Copy>
는user-agent
흐름 변수에 절대 참조를 사용하므로source
속성을<Copy>
에 지정할 필요가 없습니다. - 커스텀 메시지의
address
쿼리 매개변수를 수신 요청의addy
쿼리 매개변수 값으로 설정합니다. - HTTP 동사를
GET
으로 설정합니다.
- 수신되는 요청에서
<IgnoreUnresolvedVariables>
를 'false'로 설정합니다.<IgnoreUnresolvedVariables>
가 'false'인 경우 정책에서 추가하려는 변수 중 하나가 존재하지 않는 경우 Edge는 API 흐름에서 처리를 중지합니다.
예시 2
다음은 Assign Message를 사용하여 커스텀 요청 객체를 만드는 방법을 보여주는 또 다른 예입니다.
<AssignMessage name="AssignMessage-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> <Payload contentType="text/xml"> <request><operation>105</operation></request> </Payload> </Set> </AssignMessage>
이 예시에서는 'partner.request'라는 새 커스텀 요청을 만듭니다. 그런 다음 새 요청에서 <Verb>
및 <Payload>
를 설정합니다.
흐름의 후반부에서 발생하는 다른 AssignMessage 정책에서 커스텀 요청 메시지에 액세스할 수 있습니다. 다음 예시에서는 커스텀 요청 메시지의 user-agent
헤더 값을 가져옵니다.
<AssignMessage name="custom-request-1-access"> <DisplayName>custom-request-1-access</DisplayName> <AssignTo createNew="false" type="request"></AssignTo> <Set> <Headers> <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header> </Headers> </Set> </AssignMessage>
동영상
AssignMessage 정책에 대해 자세히 알아보려면 다음 동영상을 참조하세요.
동영상 | 설명 |
---|---|
Assign Message 정책을 사용해야 하는 이유 | AssignMessage 정책을 사용하여 백엔드 코드를 수정하지 않고 API 요청 또는 응답을 수정할 때의 이점에 대해 알아보세요. |
AssignMessage 정책을 사용하여 API 요소 복사 | API 요청 또는 응답에서 요소를 복사하고 AssignMessage 정책을 사용하여 새 요청 또는 응답 객체를 구성합니다. |
AssignMessage 정책을 사용하여 API 요소 삭제 | AssignMessage 정책을 사용하여 API 요소를 삭제하고 대상 백엔드에 도달하기 전에 API를 수정합니다. |
AssignMessage 정책을 사용하여 API 요소 추가 및 설정 | AssignMessage 정책을 사용하여 쿼리 매개변수, 헤더, 양식 매개변수, 페이로드를 추가하여 API 요청 또는 응답을 변경합니다. |
AssignMessage 정책을 사용하여 커스텀 변수 만들기 | AssignMessage 정책을 사용하여 커스텀 흐름 변수를 설정하고 API 프록시의 다른 정책에서 변수를 활용합니다. |
AssignMessage 정책을 사용하여 새 요청 또는 응답 객체 만들기 | API 런타임에서 AssignMessage 정책을 사용하여 새로운 API 요청 또는 응답 객체를 만듭니다. |
AssignMessage 정책을 사용하여 가상 API 만들기 | 응답 흐름에 AssignMessage 정책을 추가하여 간단한 가상 REST API를 만듭니다. |
AssignMessage 정책을 사용하여 페이로드 설정 또는 수정 | API 런타임에서 AssignMessage 정책을 사용하여 SOAP 페이로드를 설정하여 REST 요청을 SOAP 요청으로 변환합니다. |
오류 코드
이 섹션에서는 반환되는 오류 코드 및 오류 메시지와 이 정책이 오류를 트리거할 때 Edge에서 설정한 오류 변수를 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항 및 오류 처리를 참조하세요.
런타임 오류
이러한 오류는 정책이 실행될 때 발생할 수 있습니다.
오류 코드 | HTTP 상태 | 원인 | 해결 |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | 정책을 통해 변수를 설정할 수 없습니다. 확인되지 않은 변수의 이름은 오류 문자열을 참조하세요. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
이 오류는 메시지 유형 변수는 전체 HTTP 요청 및 응답을 나타냅니다. 기본 제공 Edge 흐름 변수 |
build |
steps.assignmessage.UnresolvedVariable |
500 |
이 오류는 메시지 할당 정책에 지정된 변수가 다음 중 하나인 경우에 발생합니다.
|
build |
배포 오류
이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.
오류 이름 | 원인 | 해결 |
---|---|---|
InvalidIndex |
메시지 할당 정책의 <Copy> 또는 <Remove> 요소에 지정된 색인이 0이거나 음수이면 API 프록시 배포가 실패합니다. |
build |
InvalidVariableName |
하위 요소 <Name> 이 비어 있거나 <AssignVariable> 요소에서 지정되지 않은 경우, 값을 할당할 유효한 변수 이름이 없으므로 API 프록시 배포가 실패합니다. 유효한 변수 이름이 필요합니다.
|
build |
InvalidPayload |
정책에 지정된 페이로드가 잘못되었습니다. |
오류 변수
이러한 변수는 이 정책이 런타임 시 오류를 트리거할 때 설정됩니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항을 참조하세요.
변수 | 장소 | 예 |
---|---|---|
fault.name="fault_name" |
fault_name은 위의 런타임 오류 표에 나열된 오류 이름입니다. 오류 이름은 오류 코드의 마지막 부분입니다. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name은 오류를 발생시킨 정책의 사용자 지정 이름입니다. | assignmessage.AM-SetResponse.failed = true |
오류 응답 예시
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
오류 규칙 예시
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
스키마
각 정책 유형은 XML 스키마(.xsd
)로 정의됩니다. 참고로 GitHub에서 정책 스키마를 사용할 수 있습니다.
관련 주제
AssignMessage 작업 샘플은 API Platform 샘플에서 사용할 수 있습니다.
ProxyEndpoint에서 target.url
을 재정의하는 방법에 대한 자세한 예시는 Apigee 커뮤니티 도움말을 참조하세요.
ServiceCallout 정책에서 실제 '경로 설정'을 보려면 Apigee GitHub 샘플에서 예시를 통해 알아보기를 확인하세요. 저장소를 클론하고 해당 주제의 안내를 따릅니다. 이 예시에서는 AssignMessage 정책을 사용하여 요청 경로를 설정한 다음 Service Callout 정책을 사용하여 외부 서비스에 요청을 보냅니다.