如何从另一个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控制器的主要内容,如果未能解决你的问题,请参考以下文章