0

YQL がデータテーブルのキーを URL エンコードするのを防ぐことができるかどうか疑問に思っていますか?

例:
現在の Guardian API は、次のような ID で動作します。

item_id = "environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy"

これらの ID の問題は、ID にスラッシュ (/) が含まれていることです。これらの文字は、API 呼び出しで URL エンコードするべきではなく、そのままにしておく必要があります。

だから私が今このクエリを持っているなら

SELECT * FROM guardian.content.item WHERE item_id='environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy'

url私のデータテーブルで次の定義を使用している間

<url>http://content.guardianapis.com/{item_id}</url>

次に、これにより、この API 呼び出しが行われます

http://content.guardianapis.com/environment%2F2010%2Foct%2F29%2Fbiodiversity-talks-ministers-nagoya-strategy?format=xml&order-by=newest&show-fields=all

代わりに、ガーディアン API は呼び出しが次のようになることを想定しています。

http://content.guardianapis.com/environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy?format=xml&order-by=newest&show-fields=all

したがって、問題は実際には、この場合は発生したくない/文字がエンコードされることです。%2F

これをどのように達成できるかについてのアイデアはありますか?

私が使用している完全なデータテーブルを確認することもできます。

http://github.com/spier/yql-tables/blob/master/guardian/guardian.content.item.xml

4

1 に答える 1

1

YQL の URI テンプレート展開 (例: ) は、バージョン 3仕様{item_id}のみに従います。バージョン 4 では、展開を単純に (わずかに) 変更して、希望どおりにすることができますが、残念ながら現在 YQL ではできません。

だから、解決策。必要に応じてパスに値を追加する、非常に基本的な ブロックを使用できます。<execute>item_id

<execute><![CDATA[
    response.object = request.path(item_id).get().response;
]]></execute>

最後に、テーブルとの差分を参照してください(上記が機能するように、他のいくつかのマイナーな調整を加えて)。

于 2010-11-01T20:38:11.697 に答える