如何在构建REST API时管理业务逻辑

时间:2013-04-11 11:13:36

标签: rest symfony architecture doctrine-orm

我正在构建一个以API为中心的Web应用程序,但是我无法绕过某些业务逻辑。

拿这个用例:

POST /companies -> User adds a new Company which has a Location 

(公司实体有一个位置实体,保留公司的地址,A公司有一个位置,一个位置可以有多个公司)

PATCH/PUT /companies/{id} -> User edits a Company information (changes street name from Company->Location

我希望我的API能够检查该位置上是否已有其他公司。 如果是这种情况,我希望用户在编辑位置实体之间做出选择(这将对该位置上的所有公司进行更改)或创建新位置。

如何以RESTful方式将此选择发送回用户?

2 个答案:

答案 0 :(得分:1)

简单:

  • PUT替换整个资源(如果存在)或创建新资源(如果不存在)。如果你想要严格保持REST(但你不必),则别无选择。由用户来决定在放置之前公司是否存在GET。

  • POST假设要替换所有公司集合。

  • 您可以使用PATCH来更新现有公司。

请参阅:http://tools.ietf.org/html/rfc5789

答案 1 :(得分:1)

REST API或任何严格的服务都会根据请求提供响应。因此,如果其他公司与该位置相关,REST API肯定可以回复用户。但API没有办法回应选择。 API可以回复一些信息,用户需要根据该信息发出另一个请求。

相反,最好为用户提供预先指定它的选项。因此,用户可以选择是否应该更新相关公司的位置,作为请求的一部分。例如,用户可以将其指定为REST API上的查询参数,并且服务可以基于该查询参数采取适当的操作。