Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

[1] Anger namn på Feign-klienten
[2] Anger bas-URL för klienten. Kan resolve:a utgöras av Spring EL-uttryck/properties, t.ex. från konfiguration (t.ex. "${some.url}")
[3] Anger en konfigurationsklass för klienten - en vanlig Spring-konfiguration där alla ingående bönor används för att konfigurera klienten.
En tänkbar konfiguration för klienten
Exempel på klient-konfiguration:

Code Block
languagejava
@Import(FeignConfiguration.class)
class GithubClientConfiguration {

    @Bean
    RequestInterceptor basicAuthInterceptor(String username, String password) { [1]
        return FeignHelper.basicAuthInterceptor(username, password);
    }

    @Bean
    FeignBuilderCustomizer feignBuilderCustomizer() {                           [2]
        return FeignHelper.customizeRequestOptions()
            .withConnectTimeout(Duration.ofSeconds(60))
            .withReadTimeout(Duration.ofSeconds(5))
            .build();
    }
}

TODO:

...

beskrivning

...

konfiguration

...

exempel på hur buildern används

...

Ifall konfigurationen definierar någon böna av typen RequestInterceptor, likt [1], kommer den automatiskt att knytas in i Feign-klienten. I exemplet används en utility-klass från ramverket - FeignHelper - för att skapa en interceptor för Basic-autentisering. FeignHelper har även stöd för att jacka in exempelvis en interceptor för OAuth2 och för att anpassa timeouts likt [2].

Utifrån ovan kan sedan klienten autowire:as in som en vanlig Spring-komponent där den behövs:

Code Block
languagejava
public class MyClass {
  
  private GithubClient ghClient;
  
  public MyClass(GithubClient ghClient) {
      this.ghClient = ghClient;
  }
  
  public List<Repo> getRepositories(String user) {
      return ghClient.getRepositories(user);
  }