如何从另一个Rest Controller调用一个Rest Controller

时间:2018-09-13 20:36:12

标签: spring

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

  • 您真的不希望该http请求-所有序列化,DNS调用,http请求调用,反序列化-所有这些都会以某种方式影响性能,如果可以避免使用,请不要使用它:) < / p>

  • 即使对性能的影响不会打扰您(因为它影响不大),也请不要忘记网络不可靠

  • 如果要从RestController2调用的RestController1仅应由应用程序访问,则应为其提供安全性,因为这可能是多余的


即使您仍然想调用另一个控制器,也要考虑仅调用它的方法(没有任何http请求),因为它只是常规类的方法。

答案 1 :(得分:0)

有很多方法可以做到这一点。其中之一是从春季开始使用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