服务器端具有大多数逻辑的应用程序(web api设计)

时间:2015-02-21 13:09:01

标签: asp.net asp.net-web-api

我有一个移动应用程序,允许公司的经理记录员工生病的时间,并在病假开始后的某些时间点联系他们(因此他们知道员工的状态)。

该应用程序非常愚蠢。它严重依赖于web api。从网络API,应用程序获取有关何时联系谁的信息。该应用程序还能够记录员工生病,生病的员工不再生病以及经理与员工联系。这些操作的所有逻辑都位于web api中。

有两个类,EmployeeSickLeaveEmployee包含实际员工的姓名和电话号码。 SickLeave包含两名员工(1名病人,1名经理)和一名布尔值,以确定它是否仍然有效。

所有逻辑都驻留在web api中,所有POST个请求(创建,更改病假条目)都非常简单。基本上所有web api都需要知道要执行的操作以及涉及的相关id。所以我最终得到了:

POSTapi/sickleave/new请求包含该员工的ID和经理的ID。

POST请求api/register/healthy包含镰刀的id。

POST请求api/register/contact包含镰刀的id。

这简直令人困惑,让我相信我做错了什么?它可能是正确的,POST请求包含的所有内容都是id?

1 个答案:

答案 0 :(得分:0)

根据REST的设计原则,在创建新实体时应使用POST。 PUT用于更新整个实体,PATCH用于部分更新实体。

一般来说,您的API结构应该基于您的实体的结构,因此您应该有/ api / sickleave /和/ api / employee /。我从你的例子中看到你并没有真正遵循这种模式,相反,你有针对不同状态的API动作。这意味着您的API不完全是RESTful。

如果你要完全实现一个REST结构,要记录一个新的病假,你可以使用员工的ID POST到/ api / sickleave /(正如你已经在做的那样)。如果API在内部计算出经理ID,我认为这很好。

要更新镰刀的状态,您应该PUT或PATCH到/ api / sickleave / {id} /修改相关细节。您还应该通过向/ api / sickleave / {id}发送DELETE请求来删除病假。

REST只是一种模式,你可以通过严格遵循模式的每一分钟细节来使事情过于复杂。然而,另一方面,不遵循模式和最佳实践会使您的代码难以理解为其他开发人员。

希望这会有所帮助。我可能需要查看您的完整数据结构,以便为您提供较低级别的详细信息。