我想通过REST将一个带有特殊字符的密钥(在我的情况下为斜线)存储到Riak.
如何http://wiki.basho.com/Riak-Search---Querying.html#Fields说:
如果您的字段包含特殊字符,例如('+',' - ','/','[',']','(',')',':'或空格),则围绕短语用单引号,或用反斜杠转义每个特殊字符.
但这些领域,而不是关键.我试图反斜杠,但遗憾的是它不起作用.
我找不到关于这个问题的任何信息.有人知道如何掩盖钥匙中的特殊字符吗?
示例(不工作):
PUT https://riak:8069/buckets/key/keys/11111\/2
Run Code Online (Sandbox Code Playgroud)
其中键是11111/2
这与Riak没有任何关系,而是你需要如何转义URL,因此服务器(包括Riak)不会将正斜杠解释为路径分隔符:
PUT https://riak:8069/buckets/key/keys/11111%2F2
Run Code Online (Sandbox Code Playgroud)
然后,您可以以相同的方式检索它:
GET https://riak:8069/riak/key/11111%2F2
Run Code Online (Sandbox Code Playgroud)
%2F是/使用URL编码时的值- 如果您的密钥包含在URL中被视为特殊字符的字符,则需要使用密钥.
您可以通过在key存储桶中列出密钥来验证这在Riak中是否正常工作(在测试服务器上 - 不要在生产服务器上执行此操作,因为它非常昂贵):
GET https://riak:8069/riak/key?keys=true
Run Code Online (Sandbox Code Playgroud)
在JSON输出结束时,您会发现:
... "keys":[...,"11111/2",...]}
Run Code Online (Sandbox Code Playgroud)