我在Rails 4.2 API(用于Angular前端)中构建博客。我用设计添加用户(我知道的是矫枉过正),我的控制器测试通过了所有内容。当我尝试curl POST请求或尝试从我的Angular应用程序创建用户时,我得到406 Not Acceptable状态代码。
这是我的创建控制器方法:
def create
user = User.new(user_params)
if user.save
render json: user, status: 201
else
render json: { errors: user.errors }, status: 422
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
我可以毫无问题地从rails控制台创建用户。
这是我一直在尝试的curl命令:
curl -i -H 'Accept: application/json' -H 'Content-type: application/json' -X POST -d '{"email":"person@mail.com","password":"12345678","password_confirmation":"12345678"}' http://api.myapi.dev/users
我也有这个资源:
api_users POST /users(.:format) api/users#create {:subdomain=>"api"}
我可以更新用户,并且可以毫无问题地从curl执行任何其他操作,我只是在这里看不到问题。非常感谢任何帮助。
答案 0 :(得分:0)
根据W3,406
回复是:
请求标识的资源只能生成响应实体,这些响应实体的内容特征根据请求中发送的接受标头不可接受。
因此,当您使用cURL时,您不需要发送-H 'Accept: application/json' -H 'Content-type: application/json
,Rails会自动为您呈现JSON结果。因为您只在控制器中指定了format.json
。
Rails希望您以下列方式发送数据:
{ "users": { "email", "person@mail.com" }, ... }
当您使用cURL命令命中服务器时未发送users
。