1服务端点与3个单独的端点,用于CRUD中的创建/更新/删除建筑

时间:2018-05-01 01:00:52

标签: rest spring-mvc maintainability software-quality robustness

我有关于建立CRUD服务的问题,我应该能够创建,更新,删除并从数据库中获取记录。

为了便于理解。我将使用我应该编写服务的公司示例来执行CRUD。我应该添加员工,更新员工,删除员工,获取为公司工作的员工列表。

以下对象将用作创建/更新/删除的请求有效内容,而EmployeeDomainObject的列表将用作获取请求的响应< / p>

EmployeeDomainObject { "firstName": "string", "lastName": "string", "id": "string", "status": "ACTIVE" or "DELETE" or null }

  • 我应该使用2项服务吗?
    • 获取的1个终点,以根据公司标识
    • 获取列表
    • 创建/更新/删除的1个终点,它将接受 EmployeeDomainObject 作为请求正文,并根据状态相应地更新数据库。
      • 如果请求的状态为:null - &gt;新记录ID将为null,保存时将生成一个动态Id
      • 如果请求的状态为:“ACTIVE” - &gt;根据ID
      • 更新记录
      • 如果请求的状态为:“DELETE” - &gt;根据ID
      • 删除记录
  • 我应该使用4项服务吗?
    • 获取的1个终点,以根据公司标识
    • 获取列表
    • 创建的1个终点,以根据EmployeeDomainObject创建员工
    • 更新的1个终点,以根据EmployeeDomainObject中的ID更新员工
    • 删除的1个终点,以根据EmployeeDomainObject中的ID
    • 删除员工

服务的范围和要求: 1.健壮 2.可维护性 3.哪个更受服务驱动? 4.可扩展/可扩展

答案赞赏

1 个答案:

答案 0 :(得分:0)

这实际上取决于您计划如何实施该服务。如果您要使用已建立的框架(如Spring),那么您很可能会使用4端点方法而没有status字段,因为HTTP动词会隐含状态(GET / POST / PUT / DELETE)。

你拥有的是RPC(远程过程调用)。 status字段是要调用的“方法”。在纯REST使用HTTP谓词的地方,RPC会使用这种类型的方法调用。因此,如果您计划在不使用框架的情况下从头开始构建服务,那么您可以使用一个端点。当您可以添加另一个status字段时,我没有看到只有2个端点的意义:

EmployeeDomainObject 
{
   "firstName": "string",
   "lastName": "string",
   "id": "string",
   "status": "ACTIVE" or "DELETE" or "RETRIEVE" or null 
}

并使用POST。它不是REST,但你不会问它是否是好的REST。

使用上述内容并没有“错误”,特别是如果您要从头开始构建服务(可能是资源受限等)。

端点只是客户端与服务交互的方式。这些交互是通过4个REST样式的端点还是1个RPC样式的POST来实现,这是无关紧要的。客户只是做它需要做的事情。

后果是服务器。像Spring这样的已建立的REST框架将为您提供一个良好的开端,但将您与4个端点联系起来。如果您可以根据需要自由设计服务器端,那么RPC风格的方法没有任何问题。您仍然可以记录/审核/处理服务的权限,但您可能需要自己编写代码。

如果您计划构建一些大型项目并聘请大量程序员,那么您可能希望顺应流程并使用4个REST样式的端点和已建立的框架,以便从更广泛的人才中招聘游泳池,而不是在您的定制设计系统上招聘和培训。