HTTPModifier 정책

대상

HTTPModifier 정책은 기존 요청 또는 응답 메시지를 변경할 수 있습니다.

정책을 사용하면 이러한 메시지에 대해 다음 작업을 수행할 수 있습니다.

  • 메시지에 새 양식 매개변수, 헤더, 쿼리 매개변수 추가
  • 메시지에서 헤더, 쿼리 매개변수, 양식 매개변수 삭제
  • 메시지에서 기존 속성 값 설정

HTTPModifier를 사용하면 요청 또는 응답의 속성을 추가, 변경, 삭제할 수 있습니다. 또는 커스텀 요청 메시지 만들기에 설명된 대로 HTTPModifier를 사용하여 커스텀 요청 또는 응답 메시지를 만들고 대체 대상으로 전달할 수도 있습니다.

HTTPModifier 정책은 다음 하위 요소를 사용해서 흐름 변수를 만들 수 있습니다.

<Add>, <Set>, <Remove> 요소를 구성하는 순서가 중요합니다. 정책은 정책 구성에 표시된 순서에 따라 작업을 수행합니다. 모든 헤더를 삭제하고 특정 헤더를 설정해야 하면 <Set> 요소 앞에 <Remove> 요소를 포함해야 합니다.

이 정책은 표준 정책이며 모든 환경 유형에 배포할 수 있습니다. 정책 유형과 각 환경 유형에서의 가용성에 대한 자세한 내용은 정책 유형을 참조하세요.

<HTTPModifier> 요소

HTTPModifier 정책을 정의합니다.

기본값 아래의 기본 정책 탭을 참조하세요.
필수 여부 필수
유형 복합 객체
상위 요소 해당 사항 없음
하위 요소 <Add>
<AssignTo>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

<HTTPModifier> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier> 요소는 다음 문법을 사용합니다.

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- All HTTPModifier 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>

  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<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>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</HTTPModifier>

기본 정책

다음 예시에서는 Apigee UI에서 흐름에 HTTPModifier 정책을 추가할 때의 기본 설정을 보여줍니다.

<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default">
  <DisplayName>HTTP Modifier-1</DisplayName>
  <Properties/>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</HTTPModifier>

Apigee UI에 새 HTTPModifier 정책을 삽입하면 가능한 모든 작업에 대한 스텁이 템플릿에 포함됩니다. 일반적으로 이 정책으로 수행할 작업을 선택하고 나머지 하위 요소를 삭제합니다. 예를 들어 추가 작업을 수행하려면 <Add> 요소를 사용하고 정책에서 <Remove> 및 기타 하위 요소를 삭제하여 더 읽기 쉽게 만듭니다.

이 요소에는 다음과 같이 모든 정책에 공통된 속성이 있습니다.

속성 기본 필수 여부 설명
name 해당 없음 필수

정책의 내부 이름입니다. name 속성의 값에는 문자, 숫자, 공백, 하이픈, 밑줄, 마침표가 포함될 수 있습니다. 이 값은 255자(영문 기준)를 초과할 수 없습니다.

원하는 경우 <DisplayName> 요소를 사용하여 관리 UI 프록시 편집기의 정책에 다른 자연어 이름을 사용하여 정책에 라벨을 지정합니다.

continueOnError false 선택 정책이 실패할 경우 오류가 반환되도록 하려면 false로 설정합니다. 이는 대부분의 정책에서 예상되는 동작입니다. 정책이 실패해도 흐름 실행이 계속되도록 하려면 true로 설정합니다. 참조:
enabled true 선택 정책을 시행하려면 true로 설정합니다. 정책을 중지하려면 false로 설정합니다. 정책이 흐름에 연결되어 있어도 정책이 시행되지 않습니다.
async   false 지원 중단됨 이 속성은 지원이 중단되었습니다.

다음 표에서는 <HTTPModifier>의 하위 요소에 대한 대략적인 설명을 제공합니다.

하위 요소 필수 여부 설명
일반적인 작업
<Add> 선택사항 <AssignTo> 요소로 지정된 메시지 객체 정보를 추가합니다.

<Add>는 원본 메시지에 없는 헤더 또는 매개변수를 메시지에 추가합니다. <Set>도 이 기능을 제공합니다.

기존 헤더 또는 매개변수를 덮어쓰려면 <Set> 요소를 사용합니다.

<Remove> 선택사항 <AssignTo> 요소에 지정된 메시지 변수에서 지정된 요소를 삭제합니다.
<Set> 선택사항 <AssignTo> 요소로 지정된 요청 또는 응답에서 기존 속성 값을 대체합니다.

<Set>는 원본 메시지에 이미 있는 헤더 또는 매개변수를 덮어쓰거나 없으면 새로 추가합니다.

기타 하위 요소
<AssignTo> 선택사항 HTTPModifier 정책이 작동하는 메시지를 지정합니다. 표준 요청 또는 응답이거나 새 커스텀 메시지일 수 있습니다.
<IgnoreUnresolvedVariables> 선택사항 해결되지 않은 변수가 발생하면 처리를 중지할지 여부를 결정합니다.

각 하위 요소는 다음 섹션에 설명되어 있습니다.

예시

다음 예시에서는 HTTPModifier 정책을 사용하는 몇 가지 방법을 보여줍니다.

1: 헤더 추가

다음 예시에서는 <Add> 요소가 있는 요청에 헤더를 추가합니다. 이 예시에서 VerifyAPIKey 변수는 VerifyAPIKey 정책으로 생성됩니다.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

2: 응답 수정

다음 예시에서는 헤더를 추가하여 기존 응답 객체를 수정합니다.

<HTTPModifier name="HM-modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</HTTPModifier>

이 예시에서는 새 메시지를 만들지 않습니다. 대신 HTTP 헤더를 추가하여 기존 응답 메시지를 수정합니다.

이 예시에서는 <AssignTo> 요소의 변수 이름으로 response를 지정하므로 이 정책은 대상 서버에서 반환된 데이터로 원래 설정된 응답 객체를 수정합니다.

이 정책에 의해 응답 메시지에 추가된 HTTP 헤더는 LookupCache 정책에 의해 채워진 변수에서 파생됩니다. 따라서 이 HTTPModifier 정책에 의해 수정된 응답 메시지에는 캐시에서 결과를 가져왔는지 여부를 나타내는 HTTP 헤더가 포함됩니다. 응답에서 헤더를 설정하면 디버깅 및 문제 해결에 유용할 수 있습니다.

3: 쿼리 매개변수 삭제

다음 예시에서는 요청에서 apikey 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

사용자 인증에 VerifyAPIKey 정책을 사용할 때 요청 메시지에서 apikey 쿼리 매개변수를 제거하는 것이 좋습니다. 민감한 키 정보가 백엔드 대상으로 전달되지 않도록 하려면 이 작업을 수행합니다.

하위 요소 참조

이 섹션에서는 <HTTPModifier>의 하위 요소를 설명합니다.

<Add>

<AssignTo> 요소에서 지정하는 요청 또는 응답에 정보를 추가합니다.

<Add> 요소는 원본 메시지에 존재하지 않는 메시지에 새 속성을 추가합니다. <Set>도 이 기능을 제공합니다. 기존 속성 값을 변경하려면 <Set> 요소를 사용합니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 복합 유형
상위 요소 <HTTPModifier>
하위 요소 <FormParams>
<Headers>
<QueryParams>

<Add> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    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>
</HTTPModifier>

예시 1

다음 예시에서는 <FormParams> 요소를 사용하여 초기 요청에서 세 개의 쿼리 문자열 매개변수 값을 가져와 대상 엔드포인트 요청의 양식 매개변수로 설정합니다.

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

다음 예시에서는 <Headers> 요소를 사용해서 대상 엔드포인트에 전송되는 요청에 partner-id 헤더를 추가합니다.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 3

다음 예시에서는 <QueryParams> 요소를 사용하여 정적 값이 있는 단일 쿼리 매개변수를 요청에 추가합니다.

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

이 예시에서는 요청 preflow에서 <Add>를 사용합니다. 디버그 도구와 같은 도구에서 결과를 살펴보면 https://example-target.com/get에 대한 요청은 https://example-target.com/get?myParam=42가 됩니다.

<Add>의 하위 요소는 메시지 템플릿이라는 동적 문자열 대체를 지원합니다.

<FormParams>(<Add>의 하위 요소)

요청 메시지에 새 양식 매개변수를 추가합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <FormParam> 요소의 배열
상위 요소 <Add>
하위 요소 <FormParam>

<FormParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    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>
</HTTPModifier>

예시 1

다음 예시에서는 단일 양식 매개변수(answer)와 정적 값(42)을 요청에 추가합니다.

<HTTPModifier name="HM-add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

다음 예시에서는 name 쿼리 매개변수의 값을 가져오고 이를 요청에 양식 매개변수로 추가한 후 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-Swap-QueryParam-to-FormParams">
  <Add>
    <FormParam name="name">{request.queryparam.name}
  </Add>
  <Remove>
    <QueryParam name="name"/>
  </Remove>
</HTTPModifier>

이 예시에서는 <AssignTo>로 대상을 지정하지 않습니다. 이 정책은 요청에만 매개변수를 추가합니다.

예시 3

다음 예시에서는 요청에 여러 양식 매개변수를 추가합니다.

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

이 예시에서는 원래 요청에서 쿼리 문자열 매개변수를 가져와서 이름이 다른 양식 매개변수로 추가합니다. 그런 후 원래 쿼리 매개변수를 삭제합니다. Apigee가 수정된 요청을 대상 엔드포인트에 전송합니다.

디버그 도구를 사용하여 흐름을 살펴볼 수 있습니다. 요청 본문에 쿼리 문자열 매개변수로 원래 전달된 URL 인코딩 양식 데이터가 포함되어 있습니다.

username=nick&zip_code=90210&default_language=en

다음 기준을 충족하는 경우에만 <FormParams>를 사용할 수 있습니다.

  • HTTP 동사: GET, 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>를 추가하면 Apigee가 요청의 Content-Type 헤더를 application/x-www-form-urlencoded로 설정한 후 대상 서비스로 메시지를 보냅니다.

<Headers>(<Add>의 하위 요소)

지정된 요청 또는 응답에 <AssignTo> 요소로 지정된 새 헤더를 추가합니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <Header> 요소의 배열
상위 요소 <Add>
하위 요소 <Header>

<Headers> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Add>
</HTTPModifier>

예시 1

다음 예시에서는 partner-id 헤더를 요청 메시지에 추가하고 verifyapikey.VAK-1.developer.app.partner-id 흐름 변수의 값을 이 헤더에 할당합니다.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<QueryParams>(<Add>의 하위 요소)

요청에 새 쿼리 매개변수를 추가합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <QueryParam> 요소의 배열
상위 요소 <Add>
하위 요소 <QueryParam>

<QueryParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

예시 1

다음 예시에서는 쿼리 매개변수 myParam을 요청에 추가하고 42 값을 할당합니다.

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <QueryParams>를 사용할 수 있습니다.

  • HTTP 동사: GET, POST
  • 메시지 유형: 요청

또한 <AssignTo> 요소의 type 속성이 요청 메시지인 경우에만 쿼리 매개변수를 설정할 수 있습니다. 응답에 설정해도 효과가 없습니다.

정책(<Add><QueryParams/></Add>)에서 빈 쿼리 매개변수 배열을 정의하면 정책에서 쿼리 매개변수를 추가하지 않습니다. 이는 <QueryParams>를 생략하는 것과 같습니다.

<AssignTo>

HTTPModifier 정책이 작동하는 객체를 결정합니다. 옵션은 다음과 같습니다.

  • 요청 메시지: API 프록시에서 수신한 request
  • 응답 메시지: 대상 서버에서 반환된 response
  • 커스텀 메시지: 커스텀 요청 또는 응답 객체

경우에 따라 HTTPModifier 정책이 실행되는 객체를 변경할 수 없습니다. 예를 들어 <Add> 또는 <Set>를 사용하여 응답에서 쿼리 매개변수(<QueryParams>) 또는 양식 매개변수(<FormParams>)를 추가하거나 변경할 수 없습니다. 개발자는 요청에서 쿼리 매개변수 및 양식 매개변수만 조작할 수 있습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 문자열
상위 요소 <HTTPModifier>
하위 요소 없음

<AssignTo>를 지정하지 않거나 <AssignTo> 요소를 지정하지만 요소의 텍스트 값을 지정하지 않으면 정책이 실행되는 위치에 따라 기본 요청 또는 응답에 정책이 적용됩니다. 정책이 요청 흐름에서 실행되면 요청 메시지에 영향을 미칩니다. 응답 흐름에서 실행되는 경우 정책은 기본적으로 응답에 영향을 미칩니다.

<AssignTo> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
</HTTPModifier>

예시 1

다음 예시에서는 <AssignTo> 텍스트에 메시지를 지정하지 않습니다. 즉, 정책이 실행되는 위치에 따라 request 또는 response 메시지에서 정책이 작동합니다.

<HTTPModifier name="assignto-1">
  <AssignTo createNew="false" transport="http" type="request"/>-- no-op -->
  ...
</HTTPModifier>

createNew="false"를 지정하고 메시지 이름을 명시적으로 제공하지 않으면 <AssignTo>의 다른 속성은 관련이 없습니다. 이 경우 <AssignTo> 요소를 완전히 생략할 수 있습니다.

예시 2

다음 예시에서는 새 요청 객체를 만들어 기존 객체를 덮어씁니다.

<HTTPModifier name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
  ...
</HTTPModifier>

새 요청이나 응답 객체를 만들면 HTTPModifier 정책의 다른 요소(예: <Add><Set>)가 해당 새 요청 객체에 적용됩니다.

흐름의 뒷부분에서 다른 정책의 새 요청 객체에 액세스하거나 ServiceCallout 정책을 사용하여 외부 서비스에 새 요청 객체를 전송할 수 있습니다.

예시 3

다음 예시에서는 MyRequestObject라는 새 요청 객체를 만듭니다.

<HTTPModifier name="assignto-3">
  <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
  ...
</HTTPModifier>

새 요청이나 응답 객체를 만들면 HTTPModifier 정책의 다른 요소(예: <Add><Set>)가 해당 새 요청 객체에 적용됩니다.

흐름의 뒷부분에서 다른 정책에서 이름별로 새 요청 객체에 액세스하거나 ServiceCallout 정책을 사용하여 외부 서비스에 새 요청 객체를 전송할 수 있습니다.

다음 표에서는 <AssignTo>의 속성을 설명합니다.

속성 설명 필수 여부 유형
createNew

값을 할당할 때 이 정책이 새 메시지를 만들지 여부를 결정합니다.

true이면 정책은 type(request 또는 response)에 지정된 유형의 새로운 변수를 만듭니다. 새 변수의 이름을 지정하지 않으면 정책이 type의 값에 따라 새 요청 또는 응답 객체를 만듭니다.

false인 경우 정책은 다음 두 가지 방법 중 하나로 응답합니다.

  • <AssignTo>가 변수 이름을 요청 또는 응답으로 확인할 수 있는 경우 처리가 계속 진행됩니다. 예를 들어 정책이 요청 흐름에 있는 경우 변수는 요청 객체입니다. 정책이 응답에 있는 경우 변수는 응답 객체입니다.
  • <AssignTo>를 확인할 수 없거나 메시지가 아닌 유형으로 확인되는 경우 정책에 오류가 발생합니다.

createNew를 지정하지 않으면 정책이 다음 두 가지 방법 중 하나로 응답합니다.

  • <AssignTo>가 메시지로 확인되면 처리는 다음 단계로 진행됩니다.
  • <AssignTo>를 확인할 수 없거나 메시지 외의 유형으로 확인될 경우 type에 지정된 유형의 새 변수가 생성됩니다.
선택사항 불리언
transport

요청 또는 응답 메시지 유형의 전송 유형을 지정합니다.

기본값은 http입니다(유일하게 지원되는 값).

선택사항 문자열
type createNewtrue인 경우 새 메시지의 유형을 지정합니다. 유효한 값은 request 또는 response입니다.

기본값은 request입니다. 이 속성을 생략하면 Apigee는 이 정책이 실행되는 흐름의 위치에 따라 요청 또는 응답을 작성합니다.

선택사항 문자열

<DisplayName>

name 속성 외에 이 요소를 사용하여 관리 UI 프록시 편집기에서 자연스러운 다른 이름으로 정책의 라벨을 지정합니다.

<DisplayName> 요소는 모든 정책에 공통으로 적용됩니다.

기본값 해당 사항 없음
필수 여부 선택사항. <DisplayName>을 생략하면 정책의 name 속성 값이 사용됩니다.
유형 문자열
상위 요소 <PolicyElement>
하위 요소 없음

<DisplayName> 요소는 다음 문법을 사용합니다.

구문

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 요소에 속성 또는 하위 요소가 없습니다.

<IgnoreUnresolvedVariables>

해결되지 않은 변수가 발생하면 처리를 중지할지 여부를 결정합니다.

기본값 거짓
필수 여부 선택사항
유형 불리언
상위 요소 <HTTPModifier>
하위 요소 없음

확인되지 않은 변수를 무시하고 계속 처리하려면 true로 설정합니다. 그렇지 않으면 false로 설정합니다. 기본값은 false입니다.

<IgnoreUnresolvedVariables>true로 설정하는 것은 변수의 값을 설정하고 가져온다는 점에서 <HTTPModifier>continueOnErrortrue로 설정하는 것과 다릅니다. continueOnErrortrue로 설정하면 Apigee는 변수를 사용할 때 발생한 오류뿐만 아니라 모든 오류를 무시합니다.

<IgnoreUnresolvedVariables> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
</HTTPModifier>

예시 1

다음 예시에서는 <IgnoreUnresolvedVariables>true로 설정합니다.

<HTTPModifier name="HM-Set-Headers">
  <Set>
    <Headers>
      <Header name='new-header'>{possibly-defined-variable}<Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</HTTPModifier>

<IgnoreUnresolvedVariables>true로 설정되기 때문에 possibly-defined-variable 변수가 정의되지 않았으면 이 정책이 오류를 발생시키지 않습니다.

<Remove>

메시지에서 헤더, 쿼리 매개변수, 양식 매개변수를 삭제합니다. 빈 태그는 헤더, 양식 매개변수, 쿼리 매개변수를 포함하여 다음 매개변수를 모두 삭제합니다.

영향을 받는 메시지는 요청 또는 응답일 수 있습니다. <AssignTo> 요소를 사용하여 <Remove>가 작동하는 메시지를 지정합니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 복합 유형
상위 요소 <HTTPModifier>
하위 요소 <FormParams>
<Headers>
<QueryParams>

<Remove>의 일반적인 사용 사례는 수신 요청 객체에서 민감한 정보가 포함된 쿼리 매개변수 또는 헤더를 삭제하여 백엔드 서버에 전달하지 않도록 하는 것입니다.

<Remove> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

예 1

다음 예시에서는 request 객체에서 모든 양식 매개변수 및 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예 2

다음 예시에서는 메시지 객체에서 모든 것을 삭제합니다.

<HTTPModifier name="HM-remove-3">
  <Remove/>
  <AssignTo>request</AssignTo>
</HTTPModifier>

일반적으로 <Set> 요소를 사용해서 일부 대체 값을 메시지에 설정하려는 경우에만 이를 수행합니다.

<FormParams>(<Remove>의 하위 요소)

요청에서 지정된 양식 매개변수를 삭제합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <FormParam> 요소의 배열 또는 빈 배열
상위 요소 <Remove>
하위 요소 <FormParam>

<FormParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Remove>
</HTTPModifier>

예시 1

다음 예시에서는 요청에서 세 개의 양식 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

다음 예시에서는 요청에서 모든 양식 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 3

이름이 같은 양식 매개변수가 여러 개 있는 경우 다음 문법을 사용하세요.

<HTTPModifier name="HM-remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

이 예시에서는 f1, f2f3의 두 번째 값을 삭제합니다. f3에 값이 하나만 있으면 삭제되지 않습니다.

다음 기준을 충족하는 경우에만 <FormParams>를 사용할 수 있습니다.

  • 메시지 유형: 요청
  • Content-Type: application/x-www-form-urlencoded

<Headers>(<Remove>의 하위 요소)

<AssignTo> 요소로 지정된 요청 또는 응답에서 지정된 HTTP 헤더를 삭제합니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <Header> 요소의 배열 또는 빈 배열
상위 요소 <Remove>
하위 요소 <Header>

<Headers> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Remove>
</HTTPModifier>

예시 1

다음 예시에서는 요청에서 user-agent 헤더를 삭제합니다.

<HTTPModifier name="HM-remove-one-header">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

다음 예시에서는 요청에서 모든 헤더를 삭제합니다.

<HTTPModifier name="HM-remove-all-headers">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 3

이름이 같은 헤더가 여러 개 있는 경우 다음 문법을 사용합니다.

<HTTPModifier name="HM-remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

이 예시에서는 요청에서 h1, h2h3의 두 번째 값을 삭제합니다. h3에 값이 하나만 있으면 삭제되지 않습니다.

<QueryParams>(<Remove>의 하위 요소)

요청에서 지정된 쿼리 매개변수를 삭제합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <QueryParam> 요소의 배열 또는 빈 배열
상위 요소 <Remove>
하위 요소 <QueryParam>

<QueryParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

예시 1

다음 예시에서는 요청에서 단일 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

다음 예시에서는 요청에서 모든 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-queryparams-2">
  &tl;Remove>
      <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 3

이름이 같은 쿼리 매개변수가 여러 개 있는 경우 다음 문법을 사용하세요.

<HTTPModifier name="HM-remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

이 예시에서는 요청에서 qp1, qp2qp3의 두 번째 값을 삭제합니다. qp3에 값이 하나만 있으면 삭제되지 않습니다.

예 4

다음 예시에서는 요청에서 apikey 쿼리 매개변수를 삭제합니다.

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <QueryParams>를 사용할 수 있습니다.

  • HTTP 동사: GET, POST
  • 메시지 유형: 요청

<Set>

<AssignTo> 요소로 지정된 요청 또는 응답 메시지의 정보를 설정합니다. <Set>는 원래 메시지에 이미 있는 헤더, 쿼리, 양식 매개변수를 덮어쓰거나, 없으면 새로 추가합니다.

HTTP 메시지의 헤더, 쿼리 및 양식 매개변수에는 여러 값이 포함될 수 있습니다. 헤더 또는 매개변수의 추가 값을 추가하려면 <Add> 요소를 대신 사용합니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 복합 유형
상위 요소 <HTTPModifier>
하위 요소 <FormParams>
<Headers>
<Path>
<QueryParams>
<StatusCode>
<Verb>
<Version>

<Set> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    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>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

다음 예시에서는 특정 헤더를 설정합니다. 이 정책이 요청 흐름에 연결되면 업스트림 시스템은 원래 인바운드 요청에 포함되지 않은 추가 헤더를 수신할 수 있습니다.

<HTTPModifier name="HM-Set-Header">
  <Set>
    <Headers>
        <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header>
    </Headers>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<FormParams>(<Set>의 하위 요소)

요청에서 기존 양식 매개변수를 덮어쓰고 이 요소로 지정하는 새 값으로 대체합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <FormParam> 요소의 배열
상위 요소 <Set>
하위 요소 <FormParam>

<FormParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 myparam이라는 양식 매개변수를 새 커스텀 요청의 request.header.myparam 변수 값으로 설정합니다.

<HTTPModifier name="HM-set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
  <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <FormParams>를 사용할 수 있습니다.

  • HTTP 동사: POST
  • 메시지 유형: 요청

정책(<Add><FormParams/></Add>)에서 빈 양식 매개변수를 정의하면 정책은 양식 매개변수를 추가하지 않습니다. 이는 <FormParams>를 생략하는 것과 같습니다.

<Set>는 메시지의 Content-Type을 대상 엔드포인트로 전송하기 전에 application/x-www-form-urlencoded로 변경합니다.

<Headers>(<Set>의 하위 요소)

<AssignTo> 요소로 지정된 요청 또는 응답에서 기존 HTTP 헤더를 덮어씁니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <Header> 요소의 배열
상위 요소 <Set>
하위 요소 <Header>

<Headers> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 x-ratelimit-remaining 헤더를 ratelimit.Quota-1.available.count 변수의 값으로 설정합니다.

<HTTPModifier name="HM-Set-RateLimit-Header">
  <Set>
    <Headers>
      <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header>
    </Headers>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

정책(<Set><Headers/></Set>)에서 빈 헤더를 정의하는 경우 정책은 헤더를 설정하지 않습니다. 이는 <Headers>를 생략하는 것과 효과가 같습니다.

<Path>(<Set>의 하위 요소)

<QueryParams>(<Set>의 하위 요소)

요청의 기존 쿼리 매개변수를 새 값으로 덮어씁니다. 이 요소는 응답에 영향을 주지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 <QueryParam> 요소의 배열
상위 요소 <Set>
하위 요소 <QueryParam>

<QueryParams> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 address 쿼리 매개변수를 request.header.address 변수 값으로 설정합니다.

<HTTPModifier name="HM-set-queryparams-1">
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <QueryParams>를 사용할 수 있습니다.

  • HTTP 동사: GET, POST
  • 메시지 유형: 요청

정책(<Set><QueryParams/></Set>)에 빈 쿼리 매개변수를 정의하면 정책에서 쿼리 매개변수가 설정되지 않습니다. 이는 <QueryParams>를 생략하는 것과 같습니다.

<StatusCode>(<Set>의 하위 요소)

응답에 상태 코드를 설정합니다. 이 요소는 요청에 영향을 미치지 않습니다.

기본값 '200'(<AssignTo>createNew 속성이 'true'로 설정된 경우)
필수 여부 선택사항
유형 문자열 또는 VARIABLE
상위 요소 <Set>
하위 요소 없음

<StatusCode> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 간단한 상태 코드를 설정합니다.

<HTTPModifier name="HM-set-statuscode-404">
  <Set>
    <StatusCode>404<<StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

예시 2

<StatusCode>의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 다음 예시와 같이 중괄호로 묶인 변수 이름은 런타임 시 참조된 변수 값으로 대체됩니다.

<HTTPModifier name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <StatusCode>를 사용할 수 있습니다.

  • 메시지 유형: 응답

<Verb>(<Set>의 하위 요소)

요청에 HTTP 동사를 설정합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 문자열 또는 VARIABLE
상위 요소 <Set>
하위 요소 없음

<Verb> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 요청에 간단한 동사를 설정합니다.

<HTTPModifier name="HM-set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

예시 2

<Verb>의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 중괄호로 묶인 변수 이름이 런타임 시 참조된 변수의 값으로 대체됩니다.

다음 예시에서는 변수를 사용하여 동사를 채웁니다.

<HTTPModifier name="HM-set-verb-to-dynamic-value">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

다음 기준을 충족하는 경우에만 <Verb>를 사용할 수 있습니다.

  • 메시지 유형: 요청

<Version>(<Set>의 하위 요소)

요청에 HTTP 버전을 설정합니다. 이 요소는 응답에 영향을 미치지 않습니다.

기본값 해당 사항 없음
필수 여부 선택사항
유형 문자열 또는 VARIABLE
상위 요소 <Set>
하위 요소 없음

<Version> 요소는 다음 문법을 사용합니다.

구문

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

예시 1

다음 예시에서는 버전 번호를 1.1로 설정합니다.

<HTTPModifier name="HM-set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
</HTTPModifier>

예시 2

다음은 중괄호 안의 변수를 사용하여 버전 번호를 설정합니다.

<HTTPModifier name="HM-set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<Version>의 콘텐츠는 메시지 템플릿으로 처리됩니다. 즉 중괄호로 묶인 변수 이름이 런타임 시 참조된 변수의 값으로 대체됩니다.

다음 기준을 충족하는 경우에만 <Version>를 사용할 수 있습니다.

  • 메시지 유형: 요청

커스텀 요청 메시지 만들기

HTTPModifier를 사용하여 커스텀 요청 메시지를 만들 수 있습니다. 커스텀 요청을 만든 후 다음과 같은 방법으로 사용할 수 있습니다.

  • 다른 정책에서 해당 변수에 액세스
  • 외부 서비스에 전달

커스텀 요청 메시지를 만들려면 HTTPModifier 정책의 <AssignTo> 요소를 사용합니다. createNewtrue로 설정하고 다음 예시와 같이 요소 본문에 새 메시지 이름을 지정합니다.

<HTTPModifier name="assignto-3">
    <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
    ...
  </HTTPModifier>

기본적으로 Apigee는 커스텀 요청 메시지를 사용하지 않습니다. 커스텀 요청 메시지 생성 후 Apigee는 원래 요청으로 흐름을 계속 진행합니다. 커스텀 요청을 사용하려면 요청 메시지를 사용하고 해당 정책에 대한 구성에서 새로 생성된 요청 메시지를 명시적으로 참조하도록 정책을 추가합니다. 이렇게 하면 커스텀 요청을 외부 서비스 엔드포인트에 전달할 수 있습니다.

다음 예시에서는 커스텀 요청 메시지를 만듭니다.

예시 1

다음 예시에서는 HTTPModifier로 커스텀 요청 객체를 만듭니다.

<HTTPModifier name="HTTPModifier-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</HTTPModifier>

예시:

  • MyCustomRequest라는 새 요청 메시지 객체를 만듭니다.
  • MyCustomRequest에서 이 정책은 다음을 실행합니다.
    • 커스텀 메시지의 address 쿼리 매개변수를 수신 요청의 addy 쿼리 매개변수 값으로 설정합니다.
    • HTTP 동사를 GET으로 설정합니다.
  • <IgnoreUnresolvedVariables>false로 설정합니다. <IgnoreUnresolvedVariables>false인 경우 정책 구성에서 참조된 변수 중 하나가 없으면 Apigee에서 API 흐름에 오류 상태를 입력합니다.

예시 2

다음은 HTTPModifier를 사용하여 커스텀 요청 객체를 만드는 방법을 보여주는 또 다른 예입니다.

<HTTPModifier name="HTTPModifier-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
  </Set>
</HTTPModifier>

이 예시에서는 partner.request라는 새로운 커스텀 요청을 만듭니다. 그런 다음 새 요청에서 <Verb>를 설정합니다.

이 흐름의 뒷부분에서 발생하는 다른 HTTPModifier 정책에서 커스텀 메시지의 다양한 속성에 액세스할 수 있습니다. 다음 예시에서는 이름이 지정된 커스텀 응답에서 헤더 값을 가져와 요청 메시지의 새 헤더에 배치합니다.

<HTTPModifier name="HM-Set-Header">
  <AssignTo>request</AssignTo>
  <Set>
    <Headers>
      <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header>
    </Headers>
  </Set>
</HTTPModifier>

오류 코드

이 섹션에서는 반환되는 오류 코드 및 오류 메시지와 이 정책이 오류를 트리거할 때 Apigee에서 설정한 오류 변수를 설명합니다. 오류를 처리하기 위해 오류 규칙을 개발 중인 경우, 이 정보는 중요합니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항오류 처리를 참조하세요.

런타임 오류

이러한 오류는 정책이 실행될 때 발생할 수 있습니다.

오류 코드 HTTP 상태 원인 수정
entities.UnresolvedVariable 500 메시지 템플릿 변수가 정의되지 않았거나 범위를 벗어났습니다.
steps.httpmodifier.InvalidStatusCode 500 상태 코드의 확인된 값이 잘못되었습니다. 자세한 내용은 오류 문자열을 참조하세요.

배포 오류

이 오류는 이 정책이 포함된 프록시를 배포할 때 발생할 수 있습니다.

오류 이름 원인 수정
InvalidIndex HTTPModifier 정책의 <Remove> 요소에 지정된 인덱스가 0 또는 음수이면 API 프록시 배포가 실패합니다.

오류 변수

이러한 변수는 이 정책이 런타임 시 오류를 트리거할 때 설정됩니다. 자세한 내용은 정책 오류에 대해 알아야 할 사항을 참조하세요.

변수 장소
httpmodifier.POLICY_NAME.failed POLICY_NAME은 오류를 발생시킨 정책의 사용자 지정 이름입니다. httpmodifier.HM-SetResponse.failed = true

오류 응답 예시

{
   "fault":{
      "detail":{
         "errorcode":"steps.httpmodifier.InvalidStatusCode"
      },
      "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request"
   }
}

오류 규칙 예시

<FaultRule name="HTTPModifier Faults">
    <Step>
        <Name>HM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "InvalidStatusCode")</Condition>
    </Step>
    <Condition>(httpmodifier.failed = true)</Condition>
</FaultRule>

스키마

각 정책 유형은 XML 스키마(.xsd)로 정의됩니다. 참고로 GitHub에서 정책 스키마를 사용할 수 있습니다.