Rails 5 API 始终 return 200 OK,即使发生回滚。为什么?
Rails 5 API always return 200 OK, even if a rollback occurs. Why?
我有一个很奇怪的问题。我正在使用 Rails 5 并设计构建基于 json 的 REST api,但对于每个请求,我总是得到 200 OK
,即使发生 Rollback
.例如:
curl -i -H "Content-Type: application/json" -d '{ "user": { "email": "user@example.com", "password": "123457890" } }' -X POST http://api.test.com:3000/users/registration
它通常将用户存储到数据库中,但是例如,如果我再次 post 相同的请求,则会在数据库上执行 Rollback
因为电子邮件是一个索引(and是正确的,是我想要的...) 但响应又是 200 OK
.
现在,Devise 控制器被覆盖了,因为我需要在不同的命名空间和模块之间共享它们,我按照 Devise/Wiki 的建议覆盖它们,默认行为为:
def method
super
end
因此,在正常的应用程序中,如果某些验证失败,则会向相应视图中的用户返回一个错误,使用默认控制器(与我的相同,没有任何改变!).为什么对于 "API only" 应用程序,每个请求似乎总是很好?我忘记了什么?
感谢大家。
编辑: 服务器输出。
Started POST "users/registration" for 127.0.0.1
Processing by Users::RegistrationsController#create as */*
Parameters: {"user"=>{"email"=>"user@example.com", "password"=>" [FILTERED]"}, "registration"=>{"user"=>{"email"=>"user@example.com", "password"=>"[FILTERED]"}}}
(0.3ms) BEGIN
User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = LIMIT [["email", "user@example.com"], ["LIMIT", 1]]
(0.3ms) ROLLBACK
Completed 200 OK in 143ms (Views: 0.1ms | ActiveRecord: 1.4ms)
[已解决]
经过 4 天的搜索,我忘记了 application_controller.rb
中的 respond_to :json
。
检查您请求中的 Content-Type 和 Accept headers 是否配置正确,例如。接受 -> application/json 和 Content-Type -> application/json.
我有一个很奇怪的问题。我正在使用 Rails 5 并设计构建基于 json 的 REST api,但对于每个请求,我总是得到 200 OK
,即使发生 Rollback
.例如:
curl -i -H "Content-Type: application/json" -d '{ "user": { "email": "user@example.com", "password": "123457890" } }' -X POST http://api.test.com:3000/users/registration
它通常将用户存储到数据库中,但是例如,如果我再次 post 相同的请求,则会在数据库上执行 Rollback
因为电子邮件是一个索引(and是正确的,是我想要的...) 但响应又是 200 OK
.
现在,Devise 控制器被覆盖了,因为我需要在不同的命名空间和模块之间共享它们,我按照 Devise/Wiki 的建议覆盖它们,默认行为为:
def method
super
end
因此,在正常的应用程序中,如果某些验证失败,则会向相应视图中的用户返回一个错误,使用默认控制器(与我的相同,没有任何改变!).为什么对于 "API only" 应用程序,每个请求似乎总是很好?我忘记了什么?
感谢大家。
编辑: 服务器输出。
Started POST "users/registration" for 127.0.0.1
Processing by Users::RegistrationsController#create as */*
Parameters: {"user"=>{"email"=>"user@example.com", "password"=>" [FILTERED]"}, "registration"=>{"user"=>{"email"=>"user@example.com", "password"=>"[FILTERED]"}}}
(0.3ms) BEGIN
User Exists (0.8ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = LIMIT [["email", "user@example.com"], ["LIMIT", 1]]
(0.3ms) ROLLBACK
Completed 200 OK in 143ms (Views: 0.1ms | ActiveRecord: 1.4ms)
[已解决]
经过 4 天的搜索,我忘记了 application_controller.rb
中的 respond_to :json
。
检查您请求中的 Content-Type 和 Accept headers 是否配置正确,例如。接受 -> application/json 和 Content-Type -> application/json.