解析请求参数时出错 JSON::ParserError - 795: 意外令牌位于
Error occurred while parsing request parameters JSON::ParserError - 795: unexpected token at
我正在尝试为用户编写 API 方法来注册 spree 应用程序。它在我的本地机器上运行正常,但在服务器上运行不正常。这是我的 user_decorator_controller.rb
代码
def sign_up
@user = Spree::User.find_by_email(params[:user][:email])
if @user.present?
render "spree/api/users/user_exists", :status => 401 and return
end
@user = Spree::User.new(user_params)
if !@user.save
unauthorized
return
end
@user.generate_spree_api_key!
end
和 sign_up。v1.rabl 是
object @user
attributes :id, :spree_api_key, :email, :firstname, :lastname, :mobile
child(:bill_address => :bill_address) do
extends "spree/api/addresses/show"
end
child(:ship_address => :ship_address) do
extends "spree/api/addresses/show"
end
当我使用以下请求对服务器进行 CURL 时
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST -d {"user":{"email":"ml5698@gmail.com","password":"12345678", "firstname":"M", "lastname":"L", "mobile":"9999888877"}} http://localhost:3000/api/users/sign_up
它给我上面的错误,下面是从网络服务器日志中提取的
Started POST "/api/users/sign_up" for 127.0.0.1 at 2015-10-15 11:23:36 +0530
ActiveRecord::SchemaMigration Load (0.3ms) SELECT `schema_migrations`.* FROM `schema_migrations`
Error occurred while parsing request parameters.
Contents:
{user:{email:ml5698@gmail.com,password:12345678,
JSON::ParserError - 795: unexpected token at '{user:{email:ml5698@gmail.com,password:12345678,':
json (1.8.3) lib/json/common.rb:155:in `parse'
activesupport (4.2.4) lib/active_support/json/decoding.rb:26:in `decode'
我正在使用 Ruby 2.2 , rails 4, json 1.8.3 , 请问是什么问题, 请帮我解决一下。
您的错误实际上是在使用命令行 curl 时。您使用 -d
开关,并将参数传递给它。参数只解析到下一个space,所以你传入的参数是
{user:{email:ml5698@gmail.com,password:12345678,
这就是您在错误消息中看到的内容,显然格式不正确 JSON,因此出现解析错误。
尝试像这样引用您的 -d
参数:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST -d '{"user":{"email":"ml5698@gmail.com","password":"12345678","firstname":"M","lastname":"L","mobile":"9999888877"}}' http://localhost:3000/api/users/sign_up
我正在尝试为用户编写 API 方法来注册 spree 应用程序。它在我的本地机器上运行正常,但在服务器上运行不正常。这是我的 user_decorator_controller.rb
代码def sign_up
@user = Spree::User.find_by_email(params[:user][:email])
if @user.present?
render "spree/api/users/user_exists", :status => 401 and return
end
@user = Spree::User.new(user_params)
if !@user.save
unauthorized
return
end
@user.generate_spree_api_key!
end
和 sign_up。v1.rabl 是
object @user
attributes :id, :spree_api_key, :email, :firstname, :lastname, :mobile
child(:bill_address => :bill_address) do
extends "spree/api/addresses/show"
end
child(:ship_address => :ship_address) do
extends "spree/api/addresses/show"
end
当我使用以下请求对服务器进行 CURL 时
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST -d {"user":{"email":"ml5698@gmail.com","password":"12345678", "firstname":"M", "lastname":"L", "mobile":"9999888877"}} http://localhost:3000/api/users/sign_up
它给我上面的错误,下面是从网络服务器日志中提取的
Started POST "/api/users/sign_up" for 127.0.0.1 at 2015-10-15 11:23:36 +0530
ActiveRecord::SchemaMigration Load (0.3ms) SELECT `schema_migrations`.* FROM `schema_migrations`
Error occurred while parsing request parameters.
Contents:
{user:{email:ml5698@gmail.com,password:12345678,
JSON::ParserError - 795: unexpected token at '{user:{email:ml5698@gmail.com,password:12345678,':
json (1.8.3) lib/json/common.rb:155:in `parse'
activesupport (4.2.4) lib/active_support/json/decoding.rb:26:in `decode'
我正在使用 Ruby 2.2 , rails 4, json 1.8.3 , 请问是什么问题, 请帮我解决一下。
您的错误实际上是在使用命令行 curl 时。您使用 -d
开关,并将参数传递给它。参数只解析到下一个space,所以你传入的参数是
{user:{email:ml5698@gmail.com,password:12345678,
这就是您在错误消息中看到的内容,显然格式不正确 JSON,因此出现解析错误。
尝试像这样引用您的 -d
参数:
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST -d '{"user":{"email":"ml5698@gmail.com","password":"12345678","firstname":"M","lastname":"L","mobile":"9999888877"}}' http://localhost:3000/api/users/sign_up