使用JDBC表实现REST

问题描述 投票:0回答:1

当前,我们正在使用spring-boot实现REST API。由于我们的API数量在不断增长,我们正在考虑一种解决方案,以使用其他方法来实现REST API。

方法如下:

  • 公开一个服务以接收所有HTTP请求。
  • 我们将在数据库表中配置URI,以调用下一整套服务。这些服务配置为侦听特定的JMS消息。
  • 下一组服务将接收JMS消息并处理数据。

下面是我的问题:

  • 上述方法是否仍将代表REST体系结构?
  • 上述方法的缺点是什么(我们知道网络延迟)之外的其他任何东西?
  • 我们将缺少REST体系结构的什么好处。

或者我们只能说我们的方法是REST体系结构不同吗?

rest spring-boot http esb
1个回答
0
投票

您正在做出2个主要选择,每个可以单独决定:

1)具有单个HTTP服务

2)使用JMS作为该服务与基础微服务之间的通信

关于#1,如果执行此操作,则无法再将服务称为REST,因为REST的全部目的是将HTTP动词与域对象一起用于可预测的端点集。 / objects /上的GET表示正在获取对象,/ objects上的POST表示正在创建新对象,依此类推...现在,可以了,您可以这样做并且可以正常工作,尽管它将是“非标准”。

实际上,您可能想要检查GraphQL https://www.howtographql.com/basics/1-graphql-is-the-better-rest/,因为它非常接近您要尝试的操作。

这些天实际上无论是REST还是GraphQL似乎都是两种流行的方法。

进行REST的另一种方法,如果您只是想在域对象上公开REST服务而不必编写大量代码,则是Spring Data REST:https://spring.io/projects/spring-data-rest,如果您已经对Spring感到满意,这应该很容易理解。

对于#2,您选择单个网关服务与基础服务之间的通信。您的大多数通话是否需要同步应答,例如UI要求在浏览器或电话中显示数据?如果是这样,JMS不是一个好方法。如果您的大多数服务都是异步的,例如有人提交了股票交易请求,那么JMS是一种不错的方法。 UI仅需要知道请求已提交,但是实际上将在稍后处理该请求,并且将异步获取结果。

在不了解您的应用程序的情况下,为简单起见,我建议您在服务之间坚持使用HTTP,除非有充分的理由切换到JMS。

© www.soinside.com 2019 - 2024. All rights reserved.