【发布时间】:2013-10-23 11:44:18
【问题描述】:
我们正在开发一个 REST API,并且我们允许所有四个标准动词。在 POST/PUT 的情况下,API 客户端将需要修改某些字段的值。以伪例子为例:
class Employee {
long Id;
long DepartmentId; // should i expose this?
string Department; // or should i expose this?
}
- 这里的用例是客户将发布新员工并填写所有字段。
- API 后面的数据库中有一个部门表
- 客户需要获得一份有效部门列表来发送
- 客户端可以通过 API 调用获取部门列表,如下所示:
{ "department_id": "1", “部门”:“技术” },
{ "department_id": "2", “部门”:“人力资源” }
客户可以包括上述有效部门之一。我的问题是,POST/PUT 请求是否应该包含部门 ID 或名称? id 似乎更容易验证,但对客户来说不太“友好”。无论哪种情况,我们都可以根据我们的参考表正确验证,但我想知道最佳实践是什么。
【问题讨论】:
-
客户端会不会是某种形式的选择,比如部门的下拉框?我认为应该有一个类
Department。 -
我可以开设一个部门课程,但这仍然不能真正解决我的问题。我假设 API 没有前端,并且客户端必须提前请求获取所有参考数据。
-
API 消费者应该向您发送 ID 和完整的对象。对他们来说更容易(新对象(),填充道具,发送东西)和你(抓取对象,在验证内容后按原样使用它,不费吹灰之力)。永远,永远使用名称来关联数据。
-
虽然这通常不是最实用的解决方案,但从纯 RESTful 的角度来看,最佳实践是在应用 HATEAOS 原则的同时使用 URI 作为标识符...
标签: rest