クエリスライサー
クエリスライサーのロジックは、本製品 がIN 句を使用して、各フィルタ値に対して別々のリクエストをプッシュダウンすることを可能にします。
これにより、本製品 はクライアントサイドのフィルタリングを回避できます。
クエリスライサーロジックの設定
クエリスライサーのロジックを実装するRSD を開きます。
以下のapiscript 例を参照してください。これはXML/JSON オペレーションではなく、restadoGet オペレーションで使用する必要があります。
<api:info title="queryslicer" desc="Generated schema file." other:queryslicercolumn="flight_number2222" xmlns:other="http://apiscript.com/ns?v1"> <attr name="flight_number2222" xs:type="integer" readonly="false" other:xPath="/json/flight_number" other:filter="{flight_number2222}" /> <api:check attr="_input.flight_number2222"> <api:set attr="uri" value="[uri]?flight_number={flight_number2222}"/>
この設定では、次のクエリはフィルタ値ごとに別々のリクエストを動的に渡すようになります。
SELECT * FROM launches WHERE flight_number2222 IN ('1', '2', '3')さらに、フィルタのサブSELECT クエリを使用して、フィルタの動的リストを渡すことができます。
SELECT * FROM launches WHERE flight_number2222 IN (SELECT flightId IN flights)
この関数を機能させるには、子テーブルのRSD のみにother:queryslicercolumn="flight_number2222" を設定する必要があります。
制限事項と考慮事項
スクリプトでは、スライスされたインプットにアクセスする場所のほとんどは、単一の要素を返しません。例えば、ID フィールドのスライスされた値にアクセスしようとして、GET ブロックの中で次のようなことを行うとします。
<api:set attr="URI" value="http://example.com/[_input.id]" />
これは機能せず、単一のID ではなく完全なSQL リスト(例:http://example.com/(1, 2, 3))を含むURL を返します。
スクリプト内でスライスされたID を使用できるのはURI だけで、それはスライスされたインプットが実際に使用可能になる後の段階で中括弧のビットが展開されるためです。
<api:set attr="URI" value="http://example.com/{id}" />