Rest API POST 和 GET/PUT 的不同模型

Lau*_*nSt 5 architecture rest

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

获取.../用户/12

但是,为了创建用户,我希望只允许属性的子集。例如,当您获得用户时,您会获得许多属性,例如:Id、Name、CreationDate 等

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

发布../用户

是否可以具有与获取现有属性时获得的属性完全相同的属性?

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

提前谢谢你最好的劳林

Joh*_*orn 0

第一:我认为 Roy Fieldings 的论文Architectural Styles and the Design of Network-based Software Architectures对 RESTful 架构风格有很好的定义。

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

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