如何在spring boot中从同一个应用程序调用另一个api

Sac*_*hin 1 rest spring spring-boot spring-restcontroller

我有两个RestController用户和公司。

  • CompanyControllercompanies使用服务和回购级别从公司信息中获取并将其存储到表中。

  • UsersController : 用于获取和存储用户。

  • 关系:每个用户都与公司相关联(用户有一个公司)。

当新人User注册时,我们需要通过 id 获取公司信息并与用户个人资料相关联。

为此,我在 中有一个端点CompanyController,名为getCompanyInfo。我必须在保存用户配置文件的同时调用该端点来获取公司数据。

如何在 Spring Boot 中从同一个应用程序调用另一个 API?

Afr*_*idi 5

为什么不直接调用公司服务(如果两个控制器都存在于同一个应用程序中)?这将比调用公司控制器更快。

您的控制器将如下所示:

@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
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您仍然想直接调用 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
    }
}
Run Code Online (Sandbox Code Playgroud)