我使用Rails作为API服务器,我想知道为什么要发送到服务器的数据需要嵌套。这似乎是定义params的首选方式:
def user_params
params.require(:user).permit(:first_name, :last_name, :password, :username, :email)
end
这将是发送到创建路由的相应JSON:
{
"user": {
"username": "lorem",
"first_name": "ipsum",
"last_name": "dolor",
"password": "sit",
"email": "amet"
}
}
为什么这是发布数据的首选方式?为什么JSON不能:
{
"username": "lorem",
"first_name": "ipsum",
"last_name": "dolor",
"password": "sit",
"email": "amet"
}
答案 0 :(得分:5)
这些不是在为您创建资源时发送的唯一参数,其他参数是:
utf8
,其值为✓
authenticity_token
随机字符串commit
,其值为Save
或Update
所以逻辑非常明显:Rails将所有用户归属参数分组到user
密钥内,因此,它更容易阅读,更容易被代码解释,更容易白名单相关参数。
不仅如此,有时您会尝试通过一个请求创建多个资源,例如用户有很多书籍,因此您希望创建一个用户,同时创建书籍 - 称为Nested Resources ,在这种情况下,它将是这样的:
{
"user":
{
"username": "john_don",
"books":
{
"0":
{
"author_id": 1
}
}
}
}
我希望你明白这一点。