【问题标题】:Devise - Force JSON Response设计 - 强制 JSON 响应
【发布时间】:2012-11-28 02:16:11
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby json devise


    【解决方案1】:

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

    class MyController < ApplicationController
      respond_to :json
    
      ...
    end
    

    【讨论】:

    • 感谢您的回复。我已经尝试过了,但响应仍然是重定向。
    【解决方案2】:

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

    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 的手册页了解更多参数。

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2011-05-30
      • 2016-12-21
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多