使用JDBC表实现REST

使用JDBC表实现REST,rest,spring-boot,http,esb,Rest,Spring Boot,Http,Esb,目前,我们正在使用spring引导实现RESTAPI。由于我们的API数量不断增加,我们正在考虑一种解决方案,使用不同的方法实现RESTAPI 方法如下: 公开单个服务以接收所有HTTP请求 我们将在数据库表中配置URI以调用 下一组服务。这些服务被配置为侦听 特定的JMS消息 下一组服务将接收JMS消息和流程 数据 以下是我的问题: 上述方法是否仍然代表REST体系结构 上述方法的缺点是什么(我们知道网络 延迟)除了网络延迟之外还有什么其他的吗 我们将错过的REST体系结构优势是什么

目前,我们正在使用spring引导实现RESTAPI。由于我们的API数量不断增加,我们正在考虑一种解决方案,使用不同的方法实现RESTAPI

方法如下:

  • 公开单个服务以接收所有HTTP请求
  • 我们将在数据库表中配置URI以调用 下一组服务。这些服务被配置为侦听 特定的JMS消息
  • 下一组服务将接收JMS消息和流程 数据
以下是我的问题:

  • 上述方法是否仍然代表REST体系结构
  • 上述方法的缺点是什么(我们知道网络 延迟)除了网络延迟之外还有什么其他的吗
  • 我们将错过的REST体系结构优势是什么

或者我们可以说我们的方法是采用不同的REST体系结构吗?

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

1) 拥有单一的HTTP服务

2) 使用JMS作为此服务和底层微服务之间的通信

关于#1,如果您这样做,您就不能再调用您的服务REST,因为REST的全部要点是将HTTP谓词与您的域对象一起用于可预测的端点集。GET on/objects/表示正在提取对象,POST on/objects表示正在创建新对象,等等。。。现在,这是好的,你可以这样做,它可以工作,虽然它将是“非标准”

事实上,您可能想查看GraphQL,因为它非常接近您要做的事情

如今,REST或GraphQL似乎是两种流行的方法

另一种实现REST的方法是SpringDataREST,如果您希望只在域对象上公开REST服务而不必编写大量代码,那么它就是SpringREST:如果您已经熟悉Spring,那么这应该很容易理解

对于#2,您可以选择在单个网关服务和底层服务之间进行通信。您的大多数通话是否需要同步应答,例如用户界面要求在浏览器或手机中显示数据?如果是这样,JMS不是一个好方法。如果您的大多数服务都是异步的(例如,有人提交股票交易请求),JMS将是一种不错的方法。UI只需要知道请求已提交,但它实际上会在一段时间后被处理,结果将异步获取


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

Thank you@Michael我的大多数问题都已回答,很高兴听到这些问题。你介意接受这个答案吗?