2017-08-08 69 views
0

我正在用ReactJS构建一个应用程序,它使用Laravel提供的JSON API。我试图以RESTful的方式设计API,但我发现一些情况很难处理。如何将非CRUD功能实现为RESTful API?

我如何处理需要比正常CRUD内容更“特殊”的功能的情况?例如,在我的应用程序的“列表”视图中,我可以对它进行标记。当用户从主列表视图中标记项目时,系统会查找所有具有相同名称的项目,并自动使用相同标签对它们进行标记,以便用户不必单独执行每项操作。

我已将此功能直接构建到API的/resource/{id}/update调用中,因此更新一个项目会导致其他项目也被更新,但实际上并不是我想要的。

我只希望当这个用户在这个特定的列表视图中时,这个“批量更新”才能工作,除此之外,所有其他时间更新都不应该影响除更新之外的任何记录。如何在不向我的更新端点添加“特殊情况”代码的情况下实现此目的?

+0

您是否可以为批量更新创建新的端点,并将普通更新方法中的“额外”代码移到那里? (对不起,如果听起来过于简单,我可能还没有完全理解这个问题。) –

+0

像'/ resource/{id}/update'这样的URL对我来说看起来并不是很RESTful。您可能希望将“PUT”或“PATCH”请求发送到“/ resource/{id}”。 – localheinz

回答

2

您可以创建一个新的虚拟资源 - 端点,它不直接对应来自ORM的对象,而是一个为您处理问题的类。请原谅可怜的命名尝试,但可能是类似/itemstagger/{itemid}/update'

该类可以为您处理特殊情况。

+0

同意,CRUD!= REST –

+0

好吧,请为此功能创建一个专用端点。这听起来像是一个很好的前进方向,谢谢! – jd182