WSO2 API マネージャーでインライン JavaScript プロトタイプ機能を使用しており、さまざまな HTTP 応答ステータスを設定しようとしています。これは可能ですか?もしそうなら、それはどのように行われますか?
これまでのところ、HTTP_SC プロパティを設定しようとしましたが、効果がないようです。
mc.setProperty('HTTP_SC', "404");
WSO2 API マネージャーでインライン JavaScript プロトタイプ機能を使用しており、さまざまな HTTP 応答ステータスを設定しようとしています。これは可能ですか?もしそうなら、それはどのように行われますか?
これまでのところ、HTTP_SC プロパティを設定しようとしましたが、効果がないようです。
mc.setProperty('HTTP_SC', "404");
私は同じ要件を持っていて、ボンネットの下で多くの調査を行った後、実行可能な解決策を見つけることができました。
プロパティを設定する理由:
mc.setProperty('HTTP_SC', "404");
機能しなかったのは、プロパティを axis2 スコープで設定する必要があることです (アビマランが言ったように)。mc.setProperty はそのスコープに設定しません。さらに、MessageContext オブジェクトはスコープを設定する方法を提供しません。
「プロトタイプとしてデプロイ」アクションは、指定されたインライン スクリプトをベロシティ テンプレートにマージし、結果の API 定義をファイルに保存することによって、実際に 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 を処理するため) の直後に追加しました。
<send/>
メディエーターの前に次のプロパティを追加する必要があります
<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<property name="HTTP_SC" value="403" scope="axis2"/>