springrestspring-bootspring-restcontroller

How to call another api from same app in spring boot


I have two RestControllers for user and Company.

When new User get registered, we need to fetch company information by id and associate with user profile.

For this, I have one endpoint in CompanyController, named getCompanyInfo. I have to call that endpoint to fetch company data while saving user profile.

How to call another API from same app in Spring Boot?


Solution

  • Why not are you calling Company service directly(if both controller exists in same application)? It will be more faster than calling company controller.

    Your controller will look like this:

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

    If you still want to directly call Company Controller, then you can do something like this:

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