采取以下方案:
我想通过REST PUT调用更新汽车对象上的Manufacturer字段。应该发送的数据如下所示:
{
"Id": "1000000251"
"Manufacturer": "Honda"
}
这里的关键是制造商字段的值来自存储在数据库中的一组选择。我还为客户端提供单独的GET调用,以便他们检索有效制造商的列表。如果用户提供值“Honnnda”,我将返回验证错误。
在数据库中,我有以下选择:
1 Honda
2 Toyota
3 Ford
是否首选强制他们知道每个人的内部唯一ID(更安全),因此在我的JSON对象上包含ManufacturerId字段,还是允许他们通过文本值更新字段?我将在两种情况下验证输入。此外,在发送PUT请求之前,他们将被要求获得可用的制造商列表。
编辑 - 在进行PUT调用之前,用户需要获取可用制造商的列表,因为他们需要提前知道他们可以做出的有效选择。我用汽车作为“更有形”的例子,但我的系统并没有真正处理汽车。
答案 0 :(得分:1)
REST并没有真正说明这个问题。 但是,通常REST确实更喜欢使用URI作为标识符,因此可以说你应该发送..
{
"Id": "1000000251"
"Manufacturer": "http://myapi.com/manufacturers/1"
}
我不相信这是必要的。有一部分REST社区认为在表示中使用标识符使得表示不是self-descriptive
,因为该标识符的含义可能在用户代理获取标识符的时间和使用它之间发生变化。就个人而言,我也不买。
我会说,不要出汗。做任何最适合你场景的事情。