我使用Symfony2作为JS Frontend App的Rest Api。我遇到了一个场景,我希望用户“邀请”(=添加)用户到一个组。但我想只允许他们将用户添加到现有的Relation中,而不是“覆盖”整个关系,这是与常规Symfony2表单结合的标准行为。
实现此行为的最佳做法是什么?
其他评论:
我在前端使用Ember-Data,而我的前端可能会向整个群组发送一个推送请求,包括其他用户(但不是全部)。
我的JSON Payload看起来像这样:
{
"usergroup": {
"name":"yxcv2",
"stake":"sdfghj",
"imageName":null,
"userCount":5,
"users":[
5,
6,
7
],
"gameGroup":"13",
}
}
在此方案中,用户1,2,3和4已经是该组的成员。而不是用5,6,7替换1,2,3,4,我想向现有成员添加5,6,7。
答案 0 :(得分:0)
LINK
请求应该用于将项目添加到现有集合,而不是使用POST
请求覆盖它。
使用symfony表单,您可以将User
(id)以及值_method
的隐藏字段LINK
发布到类似/groups/{id}
的内容。
路由将是这样的:
group_invite:
path: /groups/{id}
defaults: { _controller: YourBundle:Group:inviteUser }
methods: [LINK]
你也可以使用FOSRestBundle的 implicit resource name definition 。
要使方法覆盖工作,配置设置framework.http_method_override
需要设置为true
(=默认值 - 自symfony版本2.3起可用)。
更多信息可在文档章节中找到:
<强> How to use HTTP Methods beyond GET and POST in Routes 强>