Ruby on rails RubyonRailsAPI=>POST请求不起作用
我目前正在使用Postman向以下路径发出POST请求:“localhost:3000/members/login”。该职位申请的内容如下:Ruby on rails RubyonRailsAPI=>POST请求不起作用,ruby-on-rails,ruby,api,post,request,Ruby On Rails,Ruby,Api,Post,Request,我目前正在使用Postman向以下路径发出POST请求:“localhost:3000/members/login”。该职位申请的内容如下: { "email": "user@email.com", "password": "password" } def login puts params.inspect puts member_params.to_s member = Member.find_by(email: params[:email].to_s.downcase
{
"email": "user@email.com",
"password": "password"
}
def login
puts params.inspect
puts member_params.to_s
member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)
ActionController::ParameterMissing (param is missing or the value is empty: member):
app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
路线定义如下:
{
"email": "user@email.com",
"password": "password"
}
def login
puts params.inspect
puts member_params.to_s
member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)
ActionController::ParameterMissing (param is missing or the value is empty: member):
app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
我在控制台收到的输出如下:
{
"email": "user@email.com",
"password": "password"
}
def login
puts params.inspect
puts member_params.to_s
member = Member.find_by(email: params[:email].to_s.downcase)
end
...
def member_params
params.require(:member).permit(:email, :password, :password_confirmation)
end
Started POST "/members/login" for 127.0.0.1 at 2018-01-02 18:56:28 -0800
(2.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
Processing by MembersController#login as */*
<ActionController::Parameters {"controller"=>"members", "action"=>"login"} permitted: false>
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)
ActionController::ParameterMissing (param is missing or the value is empty: member):
app/controllers/members_controller.rb:94:in `member_params'
app/controllers/members_controller.rb:65:in `login'
你可能已经猜到了,我对这件事还不太熟悉。我特别想要的是:
1是否有一个快速解决方案,说明为什么参数email和password没有从Postman POST请求传递到API中,以帮助我使其正常工作和
2为了使这个答案对将来可能用谷歌搜索这个问题的人更有帮助,当API调用特别是POST请求没有按预期传递参数时,是否有一个建议步骤的快速清单 我认为您的json应该是 {member:{emai:{uuuuuuuuuuuuu,password:{uuuuuuuuuuuuu}}您的member\u params函数要求向其传递一个成员,该成员不包括在您从Postman发送的参数中 您没有看到任何打印内容,因为member_params函数是before_操作,这意味着它发生在调用登录函数之前 更改“邮递员”中的内容以包含它
{
"member":
{
"email": "email address",
"password": "password"
}
}
我不知道postman的情况,如果您能展示一下您的http请求是什么样子,那就最好了。请尝试将params.require:member.permit更改为params.permit,因为您没有发送嵌套在成员密钥中的参数。