How to call another api from same app in spring boot

12,180

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 than look like this:

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

If still you 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
    }
}
Share:
12,180
Sachin
Author by

Sachin

Updated on June 22, 2022

Comments

  • Sachin
    Sachin almost 2 years

    I have two RestControllers for user and Company.

    • CompanyController: fetch from and store company information to companies table using service and repo level.

    • UsersController : It is used to fetch and store users.

    • Relationship: Each user is associated with company(User hasOne 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?

    • Afridi
      Afridi almost 7 years
      Why not are you calling Company service directly(if both controller exists in same application)? It will be more faster than calling company controller.
    • Sachin
      Sachin almost 7 years
      Because i am doing some calculation as well on Company controller. I dont want to lose or rewrite that
    • Afridi
      Afridi almost 7 years
      Controller main purpose is to generally validate request parameters and then use respective services for any type of calculation or business logic validation. But still if you want to call controller, then you can use Resttemplate
    • Sachin
      Sachin almost 7 years
      Thanks. If i go for first comment moving to service layer. Then how can i utilize EntityToDto and Dtotoentity function present in company controller
    • Afridi
      Afridi almost 7 years
      can you please post your controller code? I don't know how did you implemented your controller's functions like "EntityToDto " etc
    • ScottSummers
      ScottSummers over 5 years
      You can autowire the controller and call the methods.