0

如何在 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

4

2 回答 2

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的手册页以获取更多参数。

于 2013-02-02T16:11:24.910 回答
0

我不确定我是否理解您的问题,但这可能是您正在寻找的。只需在您的控制器中添加 respond_to,例如:

class MyController < ApplicationController
  respond_to :json

  ...
end
于 2012-11-28T03:16:01.733 回答