设计 - 强制JSON响应

时间:2012-11-28 02:16:11

标签: ruby-on-rails ruby json devise

如何在Devise上强制响应JSON?

当我的控制器需要使用

进行身份验证时
before_filter :authenticate_user!

如果我发布JSON数据,响应仅在JSON中。 但我希望Devise总是以JSON响应某些控制器和操作。

修改

我正在使用

:token_authenticatable

所以我每次通话都会传递auth_token:

curl --data "token=xyzHtPAFGuAuFiVWsxsZ&receipt=adsfadsfsdfdsf" http://0.0.0.0:3000/user/receipt

但是当令牌不正确时,响应是HTML重定向

<html><body>You are being <a href="http://0.0.0.0:3000/users/sign_in">redirected</a>.</body></html>

我希望这个回复是JSON

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但这可能就是你要找的东西。只需在控制器中添加respond_to,如:

class MyController < ApplicationController
  respond_to :json

  ...
end

答案 1 :(得分:0)

您需要定义所需响应的内容类型

curl -X POST \
     -H "Content-Type:application/json" \
     -H "Accept:application/json \
     -d "token=xyzHtPAFGuAuFiVWsxsZ&receipt=adsfadsfsdfdsf" \
      http://0.0.0.0:3000/user/receipt

请查看 curl 的手册页以获取更多参数。