0

WSO2 API マネージャーでインライン JavaScript プロトタイプ機能を使用しており、さまざまな HTTP 応答ステータスを設定しようとしています。これは可能ですか?もしそうなら、それはどのように行われますか?

これまでのところ、HTTP_SC プロパティを設定しようとしましたが、効果がないようです。 mc.setProperty('HTTP_SC', "404");

4

2 に答える 2

3

私は同じ要件を持っていて、ボンネットの下で多くの調査を行った後、実行可能な解決策を見つけることができました。

プロパティを設定する理由:

mc.setProperty('HTTP_SC', "404");

機能しなかったのは、プロパティを axis2 スコープで設定する必要があることです (アビマランが言ったように)。mc.setProperty はそのスコープに設定しません。さらに、MessageContext オブジェクトはスコープを設定する方法を提供しません。

「プロトタイプとしてデプロイ」アクションは、指定されたインライン スクリプトをベロシティ テンプレートにマージし、結果の API 定義をファイルに保存することによって、実際に API 定義ファイルを作成します。

  • テンプレート: ./repository/resources/api_templates/prototype_template.xml
  • 出力場所: repository/deployment/server/synapse-configs/default/api/

出力ファイルの名前は次の形式になります。

プロバイダー--API 名-vVERSION.xml

provider は、API 作成者のユーザー名のようです。

私がしたことは、テンプレートにフィルターを追加することでした:

<filter source="boolean(get-property('HTTP_SC'))" regex="false">
    <then>
        <property name="HTTP_SC" value="200" scope="axis2"/>
    </then>
    <else>
        <property name="HTTP_SC" expression="get-property('HTTP_SC')" scope="axis2"/>
    </else>
</filter>

inSequence 要素の先頭で、同様のブロック (CONTENT_TYPE を処理するため) の直後に追加しました。

于 2016-04-14T03:57:20.733 に答える
0

<send/>メディエーターの前に次のプロパティを追加する必要があります

<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="HTTP_SC" value="403" scope="axis2"/>
于 2016-01-25T20:51:07.710 に答える