Advanced usage of the Feign client

Feign supports inheritance and multiple inheritance; it helps to remove boilerplate code for a service to follow the same conventions. You can create a base API interface and inherit it for a specific API interface.

Let's see the example:

interface BaseAPI<T> { 
  @GetMapping("/health") 
  T get(); 
 
  @GetMapping("/all") 
  List<T> all(); 
} 

Let's define a specific API interface by inheriting the base interface methods:

interface CustomAPI extends BaseAPI<T> { 
  @GetMapping("/custom") 
  T custom(); 
} 

Sometimes the resource representations are also consistent. So, you can declare to accept type parameters on the base API interface and you can inherit this base API interface to the specific interfaces. Let's see the example:

@Headers("Accept: application/json") 
interface BaseApi<T> { 
 
  @GetMapping("/api/{key}") 
  T get(@PathVariable("key") String key); 
 
  @GetMapping("/api") 
  List<T> list(); 
 
  @Headers("Content-Type: application/json") 
  @PutMapping("/api/{key}") 
  void put(@PathVariable("key") String key, T value); 
} 
 
interface AccountApi extends BaseApi<Account> { } 
 
interface CustomerApi extends BaseApi<Customer> { } 

You can use the Feign to develop APIs interfaces, per our requirements, by using inheritances and defining base API interfaces for common conventions and common configurations related to the resource representation either for headers or responses.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.14.144.229