【发布时间】:2015-06-23 23:52:39
【问题描述】:
在我们的数据库中,我们有用作 FireBase 键的 URL。
这些键是 url 编码的字符串形式:
http%3A%2F%2Fblog%ZZexample%ZZcom%2F_Test_Blog_2015_06
GET 请求返回空:
curl 'https://mydb.firebaseio.com/publishers/0000014d45a67fa3_4e93b3f/sites/0000014d45b0dc08_20173d1/pages.json?auth=authstringredacted;startAt="http%3A";orderBy="$key";limitToLast=1'
而这会返回一个项目(注意“startat”参数的区别):
curl 'https://mydb.firebaseio.com/publishers/0000014d45a67fa3_4e93b3f/sites/0000014d45b0dc08_20173d1/pages.json?auth=authstringredacted;startAt="http";orderBy="$key";limitToLast=1'
起初我认为这可能是由于查询参数的 url 编码,但使用这些也不起作用:
startAt="http%253A"
startAt="http:";orderBy="$key";limitToLast=1'
我有一个 http 请求客户端,因此它不会对查询参数进行编码,而且它也不起作用。
我知道在 REST 接口上依赖非 url 编码的查询字符串看起来很奇怪,但 Firebase 依赖于查询 arg 值是有效的 JSON。请注意查询 arg 值周围的额外“”。
是否有使查询工作的解决方法?
另一种选择是添加另一个表,将 URL 键映射到不存在编码问题的唯一 ID。
【问题讨论】: