如何从另一个Rest Controller调用Rest控制器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从另一个Rest Controller调用Rest控制器相关的知识,希望对你有一定的参考价值。

我正在学习使用Angular和Spring Boot实现一个应用程序。我们的应用程序在后端使用Angular作为前端和Spring Boot Rest服务。我正在寻找一种方法来根据来自Rest Service 1的Id(调用RestController1)来拉取一些数据,并从Rest Service 1调用Rest Service 2来获取从RestController1中提取的数据的相应数据。如何从RestController1调用RestController2并获取数据。我们正在使用hibernate。如果有任何弹簧参考文档可以阅读并理解实现,请告诉我。任何帮助是极大的赞赏。

谢谢

答案

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

  • 这是您的应用程序,您应该考虑在服务层上汇总所需的所有数据,而不是在控制器上。所以控制器可以在一个服务方法调用中获得所有必需的数据。
  • 你真的不希望这个http请求 - 所有序列化,DNS调用,http请求调用,反序列化 - 所有这些都会影响性能,如果你可以避免使用它,不要使用它:)
  • 即使性能影响不会打扰您(因为它无关紧要),也不要忘记网络不可靠
  • 如果你想从RestController2调用的RestController1只能通过应用程序访问,你应该为它提供安全性,而这可能是多余的

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

另一答案

有很多方法可以做到这一点。其中一个是使用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

以上是关于如何从另一个Rest Controller调用Rest控制器的主要内容,如果未能解决你的问题,请参考以下文章

从另一个项目调用 REST API

从另一个端点调用REST端点

使用 Spring Boot 从另一个服务调用 Rest Service 以进行课程注册系统

Spring MVC - 从另一个休息服务内部调用休息服务

从另一个容器调用 docker 容器

codeigniter:从另一个方法调用索引方法