我想知道是否可以阻止YQL对数据表的密钥进行URL编码?
示例:
当前的监护人API使用ID如下:
item_id = "environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy"
这些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
答案 0 :(得分:1)
YQL中的URI模板扩展(例如{item_id}
)仅遵循version 3规范。使用版本4,可以简单地(仅稍微)更改扩展以执行您想要的操作,但目前还没有使用YQL。
所以,一个解决方案。您可以使用非常非常基本的 <execute>
块:一个根据需要将item_id
值添加到路径中。
<execute><![CDATA[
response.object = request.path(item_id).get().response;
]]></execute>
最后,请参阅diff against your table(进行一些其他的小调整以允许上述工作)。