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 とは特に関係ありませんが、サーバー (Riak を含む) がスラッシュをパス区切り文字として解釈しないように URL をエスケープする方法が必要です:

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 に答える