【发布时间】:2015-06-13 13:14:11
【问题描述】:
我正在设计一个 REST API,尽管搜索了许多最佳实践指南,但我找不到太多与处理表示之间差异的最佳实践相关的内容POST 所需的结构与 GET 返回的相同表示结构。
GET 的虚拟user 表示可能如下所示:
{
"id": 1234,
"created": "2012-04-23T18:25:43.511Z",
"username": "johndoe@example.com",
"name": "John Doe"
}
但是,POST 用于相同的虚拟user 表示不能指定某些属性(即id 和created):
{
"username": "johndoe@example.com",
"name": "John Doe"
}
显然这是一个过于简化的示例,但鉴于用户无法指定某些字段(并且可能并不总是很明显哪些字段与所应用的方法相关)是 最佳实践 为每个创建单独的表示或期望最完整的版本并在服务器上透明地处理数据差异?
尽管拥有单一表示和处理差异服务器端显然很容易,但我担心如果不清楚可以指定哪些值(或使用PUT 更改),这对用户来说将是一个糟糕的体验例子)。如果倾向于创建单独的表示,是否有适用于表示定义的命名约定?
例如i_user 用于传入用户,o_user 用于传出用户。或user_full 和user_min 或user 和.user 等
更新:我过于简化的示例可能无法正确说明问题。想象一个具有 50 个属性的表示(例如,具有所有监视属性的服务器表示 - cpu、ram、temp、storage_drive_a、storage_drive_b、file_permission 等)在这 50 个属性中,30 个是只读属性,其中 20 个是可以设置。
【问题讨论】:
标签: rest representation