假设我有以下对象图,客户端可以在 HTTP PUT 请求中提交以更新我的父对象
{
"Id": 123,
"FirstName": "Joe",
"LastName": "Smith",
"Schools": [
{
"Id": 444,
"Name": "Fun University"
},
{
"Id": 555,
"Name": "Unfun University"
}
]
}
在我的服务中,更新学校的唯一方法是通过学生。但是,我不一定能阻止客户端修改“444”id。
我的问题是: 1. 仅在服务器上验证 id 为 444 的学校属于 id 为 123 的学生是否足够安全?2. 或者,我的客户是否需要使用学生服务向学生提出请求,然后使用学生服务上的学校列表,调用学校服务(我将创建)并在那里进行 PUT?
在场景 1 中,我将使用http://www.mydomain.com/api/students/123 (PUT) 更新整个对象。
在场景 2 中,我将使用http://www.mydomain.com/api/schools/444 (PUT)仅更新学校对象
到目前为止,我的意图是方法#1,但这不是一个好方法吗?