我正在构建一个以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方式将此选择发送回用户?
答案 0 :(得分:1)
简单:
PUT
替换整个资源(如果存在)或创建新资源(如果不存在)。如果你想要严格保持REST(但你不必),则别无选择。由用户来决定在放置之前公司是否存在GET。
POST
假设要替换所有公司集合。
您可以使用PATCH
来更新现有公司。
答案 1 :(得分:1)
REST API或任何严格的服务都会根据请求提供响应。因此,如果其他公司与该位置相关,REST API肯定可以回复用户。但API没有办法回应选择。 API可以回复一些信息,用户需要根据该信息发出另一个请求。
相反,最好为用户提供预先指定它的选项。因此,用户可以选择是否应该更新相关公司的位置,作为请求的一部分。例如,用户可以将其指定为REST API上的查询参数,并且服务可以基于该查询参数采取适当的操作。