仅API模式下的Rails返回HTML错误



我对rails控制台中的输出有点困惑,而且一个仅用于rails API的项目返回HTML错误。我有一个控制器正在抛出ActiveRecord验证错误。在我的控制台输出中,我看到:

↳ app/controllers/v1/users/accounts_controller.rb:7:in `create'
Completed 422 Unprocessable Entity in 324ms (ActiveRecord: 30.9ms | Allocations: 15443)
ActiveRecord::RecordInvalid (Validation failed: Password is too short (minimum is 8 characters)):
app/controllers/v1/users/accounts_controller.rb:7:in `create'

但在回应中,我得到了一大块HTML。这些路由被封装在scope :v1, defaults: { format: :json } do中,所以我希望响应格式是JSON。这是预期的行为吗?

是的,我计划捕捉错误并处理它们,但我很困惑为什么一个仅限rails API的应用程序会返回任何html。

轨道7.0.2.2Ruby 3.0.3

正如@max所指出的,由于development.rb中的consider_all_requests_local设置为true,因此返回了HTML错误。你可以在这里阅读更多。在API纯模式下返回HTML响应似乎违反直觉,可惜将其设置为false将纠正问题。

最新更新