4

我想通过 REST 将带有特殊字符(在我的情况下为斜线)的密钥存储到 Riak。

HowTo http://wiki.basho.com/Riak-Search---Querying.html#Fields说:

如果您的字段包含特殊字符,例如 ('+','-','/','[',']','(',')',':' 或空格),则将短语括起来在单引号中,或用反斜杠转义每个特殊字符。

但关心的是字段,而不是键。我试图反斜杠它,但不幸的是它没有工作。

我找不到有关此问题的任何信息。有人知道如何屏蔽中的特殊字符吗?

示例(不工作):

PUT https://riak:8069/buckets/key/keys/11111\/2

其中键是11111/2

4

1 回答 1

6

这与 Riak 无关,而是您需要如何转义 URL,以便服务器(包括 Riak)不会将正斜杠解释为路径分隔符:

PUT https://riak:8069/buckets/key/keys/11111%2F2

然后,您可以用相同的方式检索它:

GET https://riak:8069/riak/key/11111%2F2

%2F/是使用URL 编码时的值- 如果您的键包含在 URL 中被视为特殊字符的字符,您需要使用您的键执行此操作。

您可以通过列出存储桶中的密钥来验证这在 Riak 中是否正常工作key(在测试服务器上 - 不要在生产服务器上这样做,因为它非常昂贵):

GET https://riak:8069/riak/key?keys=true

在 JSON 输出的末尾,您会发现:

... "keys":[...,"11111/2",...]} 
于 2012-03-20T16:06:28.443 回答