ServiceCallout ポリシー

概要

Service Callout ポリシーを使用すると、API プロキシフローから別のサービスを呼び出すことができます。外部サービス(外部 RESTful サービスのエンドポイントなど)や内部サービス(同じ組織と環境の API プロキシなど)へのコールアウトを行うことができます。

  • 外部のユースケースでは、プロキシ外にあるサードパーティ API へのコールアウトを行うことができます。サードパーティ API からのレスポンスは、解析されて API のレスポンス メッセージに挿入されることで、アプリのエンドユーザーのデータを拡充して「マッシュアップ」します。また、リクエスト フローで Service Callout ポリシーを使用してリクエストを行い、レスポンス内の情報を API プロキシの TargetEndpoint に渡すこともできます。
  • 別のユースケースでは、呼び出し元と同じ組織と環境に属するプロキシを呼び出します。これはたとえば、1 つ以上の他のプロキシが利用する個別の詳細レベルの機能を提供するプロキシが存在する場合などに、役立つことがあります。たとえば、バックエンド データストアにかかわる作成 / 読み取り / 更新 / 削除オペレーションを公開するプロキシは、データをクライアントに公開する他の複数のプロキシのターゲット プロキシになることがあります。

このポリシーは、HTTP または HTTPS を経由するリクエストに対応します。

サンプル

内部プロキシに対するローカル呼び出し

<LocalTargetConnection>
    <APIProxy>data-manager</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

この例では、data-manager という名前のローカル API プロキシ(同じ組織と環境に存在する)へのコールアウトを作成し、そのプロキシ エンドポイントの名前を default に指定します。

変数としての URL

<HTTPTargetConnection>
    <URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>

この例は、URL 内で変数を使用して、ターゲットの URL を動的に代入します。URL のプロトコル部分 http:// を変数で指定することはできません。また、URL のドメイン部分や URL の残り部分にも、それぞれ別個の変数を使用する必要があります。

Google ジオコーディング / リクエストの定義

<ServiceCallout name="ServiceCallout-GeocodingRequest1">
    <DisplayName>Inline request message</DisplayName>
    <Request variable="authenticationRequest">
      <Set>
        <QueryParams>
          <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
          <QueryParam name="region">{request.queryparam.country}</QueryParam>
          <QueryParam name="sensor">false</QueryParam>
        </QueryParams>
      </Set>
    </Request>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json

リクエスト オブジェクトを作成するのに Assign Message などのポリシーを使用するのではなく、Service Callout ポリシー内で直接定義できます。この例では、外部サービスに渡される 3 つのクエリ パラメータの値が Service Callout ポリシーによって設定されます。Service Callout ポリシーでリクエスト メッセージ全体を作成し、ペイロード、application/xml などのエンコード タイプ、ヘッダー、フォーム パラメータなどを指定できます。

また、次の例では、Service Callout ポリシーに達する前にリクエストが構成されます。

<ServiceCallout name="ServiceCallout-GeocodingRequest2">
    <Request clearPayload="false" variable="GeocodingRequest"/>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>

リクエスト メッセージの内容は、GeocodingRequest という変数から抽出されます(AssignMessage ポリシーなどによって入力されます)。レスポンス メッセージは GeocodingResponse という変数に割り当てられます。この変数は、Extract Variables ポリシーあるいは JavaScript または Java で記述されたカスタムコードによって解析できます。このポリシーは、Google Geocoding API からのレスポンスを 30 秒間待ち、この時間が経過するとタイムアウトになります。

この例の Service Callout を使用する完全なサンプル API プロキシと、Assign Message ポリシーと Extract Variables ポリシーについては、ポリシー作成の使用をご覧ください。

ターゲット サーバーを呼び出す

<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout">
    <DisplayName>service-callout</DisplayName>
    <Properties/>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </Request>
    <Response>myResponse</Response>
    <HTTPTargetConnection>
        <LoadBalancer>
            <Algorithm>RoundRobin</Algorithm>
            <Server name="httpbin"/>
            <Server name="yahoo"/>
        </LoadBalancer>
        <Path>/get</Path>
    </HTTPTargetConnection>
</ServiceCallout>

このポリシーは、LoadBalancer 属性を使用してターゲット サーバーを呼び出し、サーバー間の負荷分散を行います。この例では、"httpbin" と "yahoo" という 2 つのターゲット サーバー間で負荷が分散されます。プロキシのターゲット サーバーの設定と負荷分散の構成については、バックエンド サーバー間の負荷分散をご覧ください。


Service Callout ポリシーについて

API プロキシ内で Service Callout ポリシーを使用できるシナリオは数多く存在します。たとえば、位置情報データ、顧客レビュー、パートナーの商品カタログのアイテムなどの配信を求めるための外部サービスへの呼び出しを行うように、API プロキシを構成できます。

通常、コールアウトは Assign Message と Extract Variables という他の 2 つのポリシーとともに使用されます。

  • リクエスト: Assign Message では、リモート サービスに送信されるリクエスト メッセージを入力します。
  • レスポンス: Extract Variables ではレスポンスを解析し、特定のコンテンツを抽出します。

一般的な Service Callout ポリシーの構成は次のとおりです。

  1. Assign Message ポリシー: リクエスト メッセージを作成し、HTTP ヘッダーとクエリ パラメータを挿入して、HTTP 動詞などを設定します。
  2. Service Calloutポリシー: AssignMessage ポリシーで作成されたメッセージを参照して、外部呼び出しのターゲット URL を定義し、ターゲット サービスから返されるレスポンス オブジェクトの名前を定義します。

    パフォーマンスを向上させるために、次の Apigee コミュニティのスレッドで説明されてように Service Callout レスポンスをキャッシュすることもできます(https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html)。
  3. Extract Variables ポリシー: 通常、ServiceCallout ポリシーによって生成されたメッセージを解析する JSONPath または XPath 式を定義します。その後、このポリシーは ServiceCallout レスポンスからの解析済みの値を格納する変数を設定します。

Service Callout ポリシーと、Assign Message ポリシー、Extract Variables ポリシーを一緒に使用する完全なサンプル API プロキシについては、ポリシー作成の使用をご覧ください。

カスタムエラー処理

要素リファレンス

このポリシーで構成できる要素と属性は次のとおりです。

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Remove>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
         </Remove>
         <Copy>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Copy>
        <Add>
            <Headers/>
            <QueryParams/>
            <FormParams/>
        </Add>
        <Set>
            <Headers/>
            <QueryParams/>
            <FormParams/>
            <Payload/>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Set>
    </Request>
    <Response>calloutResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
        <URL>http://example.com</URL>
        <LoadBalancer/>
        <SSLInfo/>
        <Properties/>
    </HTTPTargetConnection>
    <LocalTargetConnection>
        <APIProxy/>
        <ProxyEndpoint/>
        <Path/>
    </LocalTargetConnection>
</ServiceCallout>

<ServiceCallout> 属性

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

次の表に、ポリシーのすべての親要素に共通の属性を記載します。

属性 説明 デフォルト 要否
name

ポリシーの内部名。name 属性の値には、文字、数字、スペース、ハイフン、アンダースコア、ピリオドを使用できます。255 文字を超える値を指定することはできません。

必要に応じて、管理 UI プロキシ エディタで <DisplayName> 要素を使用してポリシーに別のわかりやすい名前でラベルを付けます。

なし 必須
continueOnError

ポリシーが失敗した場合にエラーを返すには、false に設定します。これはほとんどのポリシーで想定される動作です。

ポリシーが失敗してもフロー実行を続行するには、true に設定します。

false 省略可
enabled

ポリシーを適用するには true に設定します。

ポリシーを無効にするには false に設定します。その場合、ポリシーはフローに接続されていているとしても適用されません。

true 省略可
async

この属性は非推奨となりました。

false 非推奨

<DisplayName> 要素

name 属性に加えて、管理 UI プロキシ エディタのポリシーに別のわかりやすい名前でラベルを付けるために使います。

<DisplayName>Policy Display Name</DisplayName>
デフォルト:

なし

この要素を省略した場合、ポリシーの name 属性の値が使用されます

要否: 省略可
型: 文字列

<Request> 要素

API プロキシから他のサービスに送信されるリクエスト メッセージを格納する変数を指定します。この変数は、フロー内の先行ポリシーによって作成することも、Service Callout ポリシー内にインラインで作成することもできます。

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Remove>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Remove>
    <Copy>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Copy>
    <Add>
        <Headers/>
        <QueryParams/>
        <FormParams/>
    </Add>
    <Set>
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Set>
</Request>

<Remove><Copy><Add><Set> の各タグの構文は、Assign Message ポリシーの場合と同じです。

リクエスト メッセージを解決できない場合、またはリクエスト メッセージ タイプが無効である場合、このポリシーではエラーが返されます。

非常に単純な例では、次のように API プロキシのフロー内の先行部分ですでに代入されているリクエスト メッセージを格納する変数を渡します。

<Request clearPayload="true" variable="myRequest"/>

また、Service Callout ポリシー自体で外部サービスに送信されるリクエスト メッセージを代入することもできます。

<Request>
  <Set>
    <Headers>
      <Header name="Accept">application/json</Header>
    </Headers>
    <Verb>POST</Verb>
    <Payload contentType="application/json">{"message":"my test message"}</Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
デフォルト Request 要素またはその属性のいずれかを省略すると、Edge は次のデフォルト値を割り当てます。

<Request clearPayload="true" variable="servicecallout.request"/>

これらのデフォルト値の意味を確認してみましょう。まず、clearPayload=true は、ServiceCallout ポリシーが実行されるたびに新しいリクエスト オブジェクトが作成されることを意味します。このため、リクエストとリクエストの URI パスが再利用されることはありません。次に、デフォルトの変数名 servicecallout.request は、名前を指定しない場合にリクエストに割り当てられる予約済みの名前です。

データマスクを使用している場合はこのデフォルト名を認識しておくことが重要です。変数名を省略した場合に servicecallout.request をマスク構成に追加することが必要になるためです。たとえば、Authorization ヘッダーをマスクしてトレース セッションで表示されないようにする必要がある場合に、マスク構成に以下を追加してデフォルト名をキャプチャします。

servicecallout.request.header.Authorization

要否 省略可。
なし

属性

属性 説明 デフォルト 要否
変数

リクエスト メッセージを格納する変数の名前。

servicecallout.request 省略可
clearPayload

true の場合、リクエスト メッセージによって使用されるメモリを解放するために、リクエストが HTTP Target に送信された後に、リクエスト メッセージを格納する変数がクリアされます。

Service Callout の実行後にリクエスト メッセージが必要な場合にのみ、clearPayload オプションを false に設定します。

true 省略可

<Request> / <IgnoreUnresolvedVariables> 要素

true に設定すると、リクエスト内の未解決の変数エラーが無視されます。

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
デフォルト false
要否 省略可
ブール値

<Response> 要素

API プロキシ ロジックでリモート呼び出しからのレスポンスをさらに処理する必要がある場合にこの要素を含めます。

この要素が存在する場合、外部サービスから受信するレスポンス メッセージを含む変数の名前を指定します。ポリシーでレスポンスの全体を正常に読み取った場合のみ、ターゲットからのレスポンスが変数に割り当てられます。なんらかの原因でリモート呼び出しが失敗した場合は、エラーが返されます。

この要素を省略すると、API プロキシはレスポンスを待ち受けません。後続のフローステップの実行が API プロキシで続行されます。また、Response 要素がない場合、ターゲットからのレスポンスを後続の手順で処理できず、プロキシフローでリモート呼び出しの失敗を検出することはできません。ServiceCallout を使用するときに Response 要素を省略する一般的な用途は、メッセージを外部システムに記録することです。

 <Response>calloutResponse</Response>
デフォルト なし
要否 省略可
文字列

<Timeout> 要素

Service Callout ポリシーがターゲットからのレスポンスを待ち受けるミリ秒単位の時間。この値をランタイム時に動的に設定することはできません。Service Callout がタイムアウトになると、HTTP 500 が返され、ポリシーが失敗し、API プロキシが障害の処理で説明されているエラー状態になります。

<Timeout>30000</Timeout>
デフォルト 55,000 ミリ秒(55 秒)。Apigee Edge のデフォルトの HTTP タイムアウトの設定
要否 省略可
整数

<HTTPTargetConnection> 要素

URL、TLS / SSL、HTTP プロパティなど、トランスポートの詳細を提供します。<TargetEndpoint> 構成リファレンスをご覧ください。

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
デフォルト なし
要否 必須
なし

<HTTPTargetConnection>/<URL> 要素

呼び出されるサービスへの URL。

<HTTPTargetConnection>
    <URL>http://example.com</URL>
</HTTPTargetConnection>

URL の一部は変数によって動的に指定できます。ただし、URL のプロトコル部分 http:// を変数で指定することはできません。次の例は、変数を使用してクエリ パラメータの値を指定しています。

<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>

また、URL のパスの部分を変数で設定することもできます。

<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>

変数を使用して URL のドメインとポートを指定する場合は、ドメインとポートのみに変数を 1 つ使用し、URL のその他の部分に 2 番目の変数を使用します。

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
デフォルト なし
要否 必須
文字列

<HTTPTargetConnection> / <SSLInfo> 要素

バックエンド サービスに対する TLS / SSL 構成。TLS / SSL 構成のヘルプについては、Edge からの TLS の構成(Cloud、Private Cloud)API プロキシ構成リファレンスの「TLS/SSL TargetEndpoint 構成」をご覧ください。

<HTTPTargetConnection>
    <URL>https://example.com</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>myKeystore</KeyStore>
        <KeyAlias>myKey</KeyAlias>
        <TrustStore>myTruststore</TrustStore>
        <Ciphers/>
        <Protocols/>
    </SSLInfo>
</HTTPTargetConnection>
デフォルト なし
要否 省略可
なし

<HTTPTargetConnection> / <Properties> 要素

バックエンド サービスに対する HTTP トランスポートのプロパティ。詳細については、エンドポイント プロパティのリファレンスをご覧ください。

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <Properties>
        <Property name="allow.http10">true</Property>
        <Property name="request.retain.headers">
          User-Agent,Referer,Accept-Language
        </Property>
    </Properties>
</HTTPTargetConnection>
デフォルト なし
要否 省略可
なし

<HTTPTargetConnection> / <LoadBalancer> 要素

1 つ以上のターゲット サーバーを呼び出し、負荷分散を実行します。サンプル セクションターゲット サーバーを呼び出すのサンプルをご覧ください。バックエンド サーバー間の負荷分散をご覧ください。Service Callout ポリシーとルートルールの使用の両方からターゲット サーバーを呼び出す方法については、こちらのコミュニティの投稿もご覧ください。

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
デフォルト なし
要否 省略可
なし

<LocalTargetConnection> 要素

ローカル プロキシ、つまり、同じ組織と環境に属するプロキシをサービス コールアウトのターゲットとして指定します。

ターゲットをさらに詳細に指定するには、<APIProxy> 要素と <ProxyEndpoint> 要素、または <Path> 要素を使用します。

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
デフォルト なし
要否 必須
なし

<LocalTargetConnection>/<APIProxy> 要素

ローカル呼び出しの対象とする API プロキシの名前。このプロキシは呼び出し元のプロキシと同じ組織と環境に属している必要があります。

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

<APIProxy> 要素とともに、<ProxyEndpoint> 要素を含めて、呼び出しのターゲットとするプロキシ エンドポイントの名前を指定します。

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection>
デフォルト なし
要否 必須
文字列

<LocalTargetConnection>/<ProxyEndpoint> 要素

呼び出しのターゲットにするプロキシ エンドポイントの名前。これは、<APIProxy> 要素で指定された API プロキシのプロキシ エンドポイントです。

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
デフォルト なし
要否 省略可
なし

<LocalTargetConnection>/<Path> 要素

ターゲットとされるエンドポイントへのパス。このエンドポイントは、呼び出し元のプロキシと同じ組織と環境に属しているプロキシを参照する必要があります。

プロキシ名がわからない、または信頼できない場合は、<APIProxy>/<ProxyEndpoint> ペアの代わりにこれを使用します。パスは信頼性の高いターゲットになります。

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
デフォルト なし
要否 省略可
なし

スキーマ

フロー変数

フロー変数を使用すると、ポリシーとフローの実行中に HTTP ヘッダー、メッセージ コンテンツ、またはフロー コンテキストに基づいた動的な振る舞いを持たせることが可能です。Service Callout ポリシーの実行後は、事前定義された次のフロー変数を使用できます。フロー変数の詳細については、変数リファレンスをご覧ください。

Service Callouts には独自のリクエストとレスポンスがあり、それらのデータには変数を介してアクセスできます。メイン メッセージでは request.* 変数と response.* 変数の接頭辞を使用するため、myrequest.* 接頭辞と calloutResponse.* 接頭辞(Service Callout 構成のデフォルト)を使用して、Service Callout に固有のメッセージ データを取得します。次の表の最初の例は、Service Callout で HTTP ヘッダーを取得する方法を示しています。

変数 説明

次に示すのは、メイン リクエストとレスポンスからヘッダーを取得するのと同様の方法で、Service Callout のリクエストとレスポンスのヘッダーを取得する例です。

calloutResponse.header.HeaderName

myRequest.header.HeaderName

ここで、calloutResponse は Service Callout のレスポンスの変数名で、myRequest はリクエストの変数名です。例:

calloutResponse.header.Content-Length

この例は、Service Callout レスポンスの Content-Length ヘッダーを返します。

スコープ: Service Callout 以降
: 文字列
権限: 読み取り / 書き込み

Service Callout のリクエスト / レスポンス内のメッセージ ヘッダー。たとえば、API プロキシ ターゲットが http://example.com で、Service Callout ターゲットが http://mocktarget.apigee.net である場合、これらの変数は http://mocktarget.apigee.net に対するコールアウトのヘッダーになります。

servicecallout.requesturi

スコープ: Service Callout リクエスト以降
: 文字列
権限: 読み取り / 書き込み

ServiceCallout ポリシーの TargetEndpoint URI。URI は、TargetEndpoint URL からプロトコルとドメイン仕様を除いたものです。

servicecallout.{policy-name}.target.url

スコープ: Service Callout リクエスト以降
: 文字列
権限: 読み取り / 書き込み

Service Callout のターゲット URL。

calloutResponse.content

ここで、calloutResponse は Service Callout 構成の <Response> 変数名です。

スコープ: Service Callout レスポンス以降
: 文字列
権限: 読み取り / 書き込み

Service Callout からのレスポンスの本文。

servicecallout.{policy-name}.expectedcn

スコープ: Service Callout リクエスト以降
: 文字列
権限: 読み取り / 書き込み

Service Callout ポリシーで参照される TargetEndpoinnt の予期される一般名。これは、TargetEndpoint が TLS / SSL エンドポイントを参照する場合にのみ意味があります。

servicecallout.{policy-name}.failed

スコープ: Service Callout レスポンス以降
: ブール値
権限: 読み取り / 書き込み

ポリシーが正常完了した場合は false で、失敗した場合は true で示されるブール値。

エラー

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.servicecallout.ExecutionFailed 500

This error can occur when:

  • the policy is asked to handle input that is malformed or otherwise invalid.
  • the backend target service returns an error status (by default, 4xx or 5xx).
steps.servicecallout.RequestVariableNotMessageType 500 The Request variable specified in the policy is not of type Message. For example, if it's a string or other non-message type, you'll see this error.
steps.servicecallout.RequestVariableNotRequestMessageType 500 The Request variable specified in the policy is not of type Request Message. For example, if it's a Response type, you'll see this error.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
URLMissing The <URL> element inside <HTTPTargetConnection> is missing or empty.
ConnectionInfoMissing This error happens if the policy does not have an <HTTPTargetConnection> or <LocalTargetConnection> element.
InvalidTimeoutValue This error happens if the <Timeout> value is negative or zero.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. servicecallout.SC-GetUserData.failed = true

Example error response

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
      },
      "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: 
            request variable data_str value is not of type Message"
   }
}

Example fault rule

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

関連トピック