我正在设计一个REST API。如您所知,RESTful API没有真正的规范。 在我的情况下,我有一个简单的API,我有用户。 我可以得到用户,更新它们。像这样:
GET ... / users / 12
然而,对于创建用户,我希望仅允许属性的子集。 例如。 获得用户后,您将获得许多属性,例如: ID, 名称, 创立日期 等等
当您创建用户时,我只想允许POST名称而不是其他内容。 在理解RESTful服务时,是否允许为同一资源使用不同的http动词的不同模型? 或者你会期待
POST ../ users
可以具有与获取现有属性时完全相同的属性吗?
或者你认为我不应该这样做吗? 在阅读了许多宗教讨论之后,只是想知道;)
提前谢谢你 最好 劳林
答案 0 :(得分:0)
首先:我认为Roy Fieldings论文Architectural Styles and the Design of Network-based Software Architectures对RESTful架构风格有一个很好的定义。
第二:我认为你有一个小的误解REST不是关于模型或控制器它是关于资源。模型和资源之间通常存在一对一的关系,但并不是必需的。
第三:要实现您的要求,您只需要一个user
模型。当API用户发布超过您允许的参数时,请忽略它们,并仅使用您要在新创建的模型上设置的参数。或者,如果您不想忽略它们,则返回400 Bad Request
HTTP状态。