如何在spring Boot 中从同一个应用调用另一个API

cld4siwp  于 2023-01-08  发布在  Spring
关注(0)|答案(1)|浏览(163)

我有两个RestController分别用于用户和公司。

  • CompanyController:使用服务和存储库级别从companies表中获取公司信息并将其存储到companies表中。
  • UsersController:用于获取和存储用户。
  • 关系:每个用户都与公司相关联(User hasOne company)。

当新的User得到注册,我们需要获取公司信息的id和用户配置文件相关联。
为此,我在CompanyController中有一个端点,名为getCompanyInfo,我必须在保存用户配置文件时调用该端点来获取公司数据。
如何在Spring Boot中从同一个应用程序调用另一个API?

fwzugrvs

fwzugrvs1#

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

@RestController
public class UsersController {
    @Autowired
    private CompanyService companyService;

    @RequestMapping("/register")
    public ResponseEntity<User> registerUser(){
        //Do whatever you want
        CompanyInfo companyInfo = companyService.getCompanyInfo();
       //Do whatever you want
    }
}

如果您仍然希望直接致电公司财务总监,则可以执行以下操作:

@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
        }
    }

相关问题