RESTful API应该有多离散?


12

我以前从未构建过RESTful API,并且想知道它应该有多离散?

例如,假设我有一个客户,该客户的姓名,地址,电话号码,电子邮件地址,语言等。

是否有一种方法可以更新每个单独的字段(更新地址,更新电子邮件地址等),还是应该为整个客户提供一个单独的更新,并且每个字段都是可选的?


3
您想要REST的哪一部分?如果您只需要一个简单的API而不用担心标准,则可以像接受thorstenmüller的答案一样处理它。如果您想要一个真正的REST,则需要搜索Roy Fielding(例如+论文)。他是REST的发明者。您将看到,例如,资源==表的想法不是事实。您还将发现,例如,对于您的问题,PATCH HTTP方法在更新一个或多个字段时非常普遍。POST或PUT(此处有很多争论)方法可用于资源的完整更新的地方。
Luc Franken 2014年

Answers:


17

您对资源有一个更新操作。根据经验,数据库中的表将是一种资源。因此,在您的示例中,有一个针对Customer的控制器,该控制器具有一项更新操作,并且字段尽可能为可选。

可能会有例外(例如,如果您更新密码,则需要密码和password_confirmation),但是在大多数情况下,这都是正确的。

异常很有可能是对某些资源具有有限操作的控制器,例如只能创建和销毁的SessionsController。您不太可能希望对单个字段执行操作。

在您的示例中,一件事可以作为其自身的资源来处理,即地址。如果您有一个地址表,特别是如果每​​个客户有多个地址(开票,交货...),则可以将其作为嵌套资源来处理。但是再次对整个地址资源执行一次更新操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.