这感觉应该很简单,但是在谷歌搜索一个小时后,我无法弄清楚。
我正在将 Amazon S3“策略文档”作为 JSON 发布到我的服务器。我需要按原样对 JSON 进行编码,但是 Rails 正在向“params”添加一些东西,这使我需要编码的 JSON 变得混乱。
这是我所拥有的:
class Api::Amazons3Controller < Api::BaseController
def sign_policy
policy_document = params.except(:action, :controller)
encoded_policy_document = Base64.encode64(policy_document.to_json).gsub(/\n|\r/, '')
signature = Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
ENV['AWS_SECRET_ACCESS_KEY'],
policy_document)
).gsub(/\n/, '')
response = { policy: policy_document, signature: signature }
render json: response
end
end
我正在尝试使用params.except(:action, :controller)来“清理”参数,但是policy_document.to_json在 JSON 周围添加了一个名为“amazons3”(控制器名称)的根注释,这是我不想要的. 我只需要对请求中的纯 json 进行编码。
任何帮助将不胜感激!