如何在spring boot中从同一个应用程序调用另一个api
Posted
技术标签:
【中文标题】如何在spring boot中从同一个应用程序调用另一个api【英文标题】:How to call another api from same app in spring boot 【发布时间】:2017-10-27 07:05:37 【问题描述】:我有两个RestController
s 用户和公司。
CompanyController
:使用服务和回购级别从companies
表中获取并存储公司信息。
UsersController
:用于获取和存储用户。
关系:每个用户都与公司相关联(用户有一家公司)。
当新的User
注册时,我们需要通过id获取公司信息并与用户资料相关联。
为此,我在CompanyController
中有一个端点,名为getCompanyInfo
。我必须在保存用户资料的同时调用该端点来获取公司数据。
如何在 Spring Boot 中从同一个应用调用另一个 API?
【问题讨论】:
为什么不直接调用公司服务(如果两个控制器都存在于同一个应用程序中)?这将比调用公司控制器更快。 因为我也在公司控制器上做一些计算。我不想丢失或重写它 控制器的主要目的是一般验证请求参数,然后使用相应的服务进行任何类型的计算或业务逻辑验证。但是如果你想调用控制器,那么你可以使用 Resttemplate 谢谢。如果我先发表评论,则转到服务层。那么我如何利用公司控制器中存在的 EntityToDto 和 Dtotoentity 函数 您能发布您的控制器代码吗?我不知道您是如何实现控制器的功能,例如“EntityToDto”等 【参考方案1】:为什么不直接调用公司服务(如果两个控制器都存在于同一个应用程序中)?这会比打电话给公司控制员更快。
您的控制器将如下所示:
@RestController
public class UsersController
@Autowired
private CompanyService companySerivce;
@RequestMapping("/register")
public ResponseEntity<User> registerUser()
//Do whatever you want
CompanyInfo companyInfo = companyService.getCompanyInfo();
//Do whatever you want
如果你还想直接调用 Company Controller,那么你可以这样做:
@RestController
public class UsersController
@Autowired
private RestTemplate template;
@RequestMapping("/register")
public ResponseEntity<User> registerUser()
ResponseEntity<CompanyInfo> companyInfoResponse = template.getForObject("Url for getCompanyInfo() method", CompanyInfo.class);
CompanyInfo companyInfo = companyInfoResponse.getBody();
//Do whatever you want
【讨论】:
以上是关于如何在spring boot中从同一个应用程序调用另一个api的主要内容,如果未能解决你的问题,请参考以下文章
如何在apache中从角度调用spring boot api
在spring boot应用程序中从自己的rest api调用另一个rest api
在 Spring Boot 应用程序中从 Angular JS 调用 Rest Services 时出错
如何在 Spring Boot 中从 Azure SAML 2.0 应用程序获取角色或组