API POST 和 GET/PUT 的不同模型

Rest API different models for POST and GET/PUT

我正在设计 REST API。如您所知,RESTful API 没有真正的规范。 在我的例子中,我有一个简单的 API 我有用户。 我可以获取用户,更新他们。像这样:

GET .../users/12

但是,对于创建用户,我只想允许一部分属性。 例如。 当您获得用户时,您会获得许多属性,例如: ID, 姓名, 创建日期 等等

当您创建一个用户时,我只想允许 POST 名称而不是其他任何内容。 在您对 RESTful 服务的理解中,是否允许对同一资源的不同 http 动词使用不同的模型? 或者你会期望 a

POST ../users

可以拥有与获取现有属性时所获得的属性完全相同的属性吗?

或者您是否认为我不应该这样做? 在阅读了许多宗教讨论后只是想知道 ;)

提前致谢 最好 劳林

首先:我认为 Roy Fieldings 的论文 Architectural Styles and 基于网络的软件体系结构设计.

其次:我认为您有一个小误解,REST 与模型或控制器无关,它与资源有关。模型和资源之间通常存在一对一的关系,但这不是必需的。

第三:要实现您的要求,您只需要一个 user 模型。当 API 用户发布的参数超过您允许的参数时,请忽略它们并仅使用您要在新创建的模型上设置的参数。或者,如果您不想忽略它们 return 400 Bad Request HTTP 状态。