有没有一种优化的方法可以在本地访问基于弹簧的 rest api?

Is there an optimized way to access a spring-based rest api locally?

假设我们有一个 REST API(使用 springs RestController 实现)可以从远程和同一台本地机器(例如移动 phone 客户端和同一台服务器上的一些 mvc 组件)访问).

对于同一台机器上的本地软件组件,我想有两个极端:

对于基于 spring 的应用程序是否有任何推荐的中间立场?一些针对本地执行优化但确实将 API 保留为黑盒的旁路?

谢谢

作为良好设计的原则,我总是看到服务协议与服务实现脱节。通过这种方式,您可以将服务(例如一个简单的 Spring bean)公开为 REST 服务、EJB 或任何需要的东西。是的,它是更多的代码,但它使服务更具弹性,更能适应特定技术的微妙之处。

关于您的问题,这实际上取决于 "on the same machine" 的含义:

  • 相同的应用程序,您可以使用相同的 bean 作为依赖项(如果您将服务实现移出 REST 控制器)
  • 相同的 JVM,您可以使用像 Guava 一样的 EventBus,并使用 JSON 或 Protobuffer(推荐)
  • 对 bean 进行编码
  • 同一主机,您可能希望保持服务位置不可知并像今天一样使用普通 REST/TCP。我不认为开销可以证明增加复杂性是合理的,除非您的性能要求类似于交易室。

简而言之,如果您没有非常苛刻的性能目标,或者您不能肯定假设这两个服务将始终驻留在相同的host/jvm,REST/TCP很好。