2010-11-01 3 views
0

Je me demande s'il est possible d'empêcher YQL de coder une URL pour une donnée?Empêcher YQL d'encoder l'URL d'une clé

Exemple:
L'actuelle API gardien travaille avec ID comme ceci:

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

Le problème avec ces ID est qu'ils contiennent des barres obliques (/) et ces caractères ne doivent pas être URL codées dans le Appel d'API mais au lieu de rester tels qu'ils sont.

Donc, si j'ai maintenant cette requête

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

tout en utilisant la url défintion suivante dans mon datatable

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

alors cela se traduit par cet appel API

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

Au lieu de cela, l'API Guardian attend l'appel pour ressembler à ceci:

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

Le problème est vraiment juste que les / caractères codés comme %2F obtient que je ne veux pas arriver dans ce cas.

Des idées sur la façon dont cela peut être réalisé?

Vous pouvez également vérifier le plein datatable J'utilise:

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

Répondre

1

Les extensions-modèle URI dans YQL (par exemple {item_id}) que suivre les spécifications version 3. Avec la version 4 il serait possible de changer simplement (seulement légèrement) l'expansion pour faire ce que vous voulez, mais hélas pas actuellement avec YQL.

Donc, une solution. Vous pouvez mettre un bloc très, très basique<execute> en jeu: un qui ajoute la valeur item_id au chemin si nécessaire.

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

Enfin, voir le diff against your table (avec quelques autres modifications mineures, pour permettre au-dessus de travailler).

+0

Excellent, fonctionne parfaitement. +1 et acceptez. J'ai mis à jour la datable YQL en conséquence. Si quelqu'un en a besoin: https://github.com/spier/yql-tables/tree/master/guardian/ Les résultats peuvent également être vus directement dans la console YQL: http://y.ahoo.it/YWeXQA3h – spier