【问题标题】:How to call a Rest Controller from another Rest Controller如何从另一个 Rest Controller 调用 Rest Controller
【发布时间】:2018-09-14 05:25:57
【问题描述】:

我正在学习使用 Angular 和 Spring Boot 实现应用程序。我们的应用程序在前端使用 Angular,在后端使用 Spring Boot Rest Services。我正在寻找一种方法来从 Rest Service 1(调用 RestController1)中提取一些基于 Id 的数据,并从 Rest Service 1 调用 Rest Service 2 以获取从 RestController1 中提取的数据的相应数据。如何从 RestController1 调用 RestController2 并获取数据。我们正在使用休眠。请让我知道是否有任何 spring 参考文档来阅读和理解实现。非常感谢任何帮助。

谢谢

【问题讨论】:

  • RestTemplate 是要走的路

标签: spring


【解决方案1】:

从另一个控制器调用一个控制器听起来是个坏主意,原因如下:

  • 这是您的应用程序,您应该考虑在服务层而不是控制器上聚合您需要的所有数据。因此控制器可以在一个服务方法调用中获取所有需要的数据。

  • 你真的不想要那个 http 请求——所有的序列化、DNS 调用、http 请求调用、反序列化——所有这些都会以某种方式影响性能,如果你可以避免使用它,就不要使用它 :)

  • 即使性能影响不会打扰您(因为它微不足道),也不要忘记网络不可靠

  • 如果您想从RestController1 调用的RestController2 只能由应用程序访问,您应该为其提供安全性,而这可能是多余的


即使你仍然想调用另一个控制器,考虑只调用它的方法(没有任何 http 请求),因为它只是一个普通类的方法。

【讨论】:

  • 感谢您的快速回复。我会看看 RestTemplate 是否对我的情况有帮助
【解决方案2】:

有很多方法可以做到这一点。其中之一是使用 Spring 的 RestTemplate:

private static void getEmployees()
{
    final String uri = "http://localhost:8080/springrestexample/employees";

    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(uri, String.class);

    System.out.println(result);
}

请参阅docs

【讨论】:

  • 感谢您的快速回复。我将了解更多关于 RestTemplate 的信息,看看是否能解决我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多