0

我想知道是否可以防止 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

4

1 回答 1

1

YQL 中的 URI 模板扩展(例如{item_id})仅遵循版本 3规范。使用第 4 版,可以简单地(仅略微)更改扩展以执行您想要的操作,但遗憾的是目前还没有使用 YQL。

所以,一个解决方案。您可以使用一个非常非常基本 <execute>的块:item_id根据需要为路径添加值。

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

最后,查看与您的表的差异(还有一些其他的小调整以允许上述工作)。

于 2010-11-01T20:38:11.697 回答