Denna starter förenklar användningen av Feign som REST-klient, via Spring Cloud OpenFeign.
Alternativ 1 - FeignBuilder
FeignBuilder
används, precis som det låter, för att bygga en REST-klient vars metoder definieras i ett interface som annoteras med Spring:s annoteringar för request-mappning, t.ex.:
public interface GithubClient { @GetMapping("users/{user}/repos") List<Repo> getRepositories(@PathVariable("user") String user); }
FeignBuilder
kan sedan användas för att skapa upp en faktisk klient:
var githubClient = new FeignBuilder() .withBaseUrl("https://api.github.com/") [1] .withLogbook(...) [2] .withOAuth2Client(...) [3] .withBasicAuthentication(...) [4] .withConnectTimeout(...) [5] .withReadTimeout(...) [6] .withFollowRedirects(...) [7] .withClient(...) |8] .withContract(...) [9] .withEncoder(...) [10] .withDecoder(...) [11] .withRetryer(...) [12] .build(GithubClient.class); [13] ... var repos = githubClient.getRepositories("Sundsvallskommun"); ...
[1]
Anger bas-URL för REST-klienten som skapas.[2]
Om angiven sätts request- och response-loggning upp.[3]
Om angiven, sätts OAuth2-autentisering upp. Tar in en ClientRegistration
, t.ex.:
@Bean ClientRegistration clientRegistration() { return ClientRegistration.withRegistrationId("someId") .clientId("someClientId) .clientSecret("someClientSecret") .tokenUri("https://mytokenuri/token) .authorizationGrantType("client_credentials") .build(); }
[4]
Om angiven (användarnamn och lösenord) sätts Basic-autentisering upp.[5]
Anger connect timeout. Default-värde är 10 sekunder.[6]
Anger read timeout. Default-värde är 60 sekunder.[7]
Anger om REST-klienten ska följa omdirigeringar. Default-värde är true
.[8]
-[12]
Kan, om så önskas, användas för att exempelvis använda en alternativ HTTP-klient eller för att konfigurera retry-policy och liknande. [13]
Skapar själva REST-klienten, av given typ.
Alternativ 2 - annoteringar
TODO
TODO:
beskrivning
konfiguration
exempel på hur buildern används
exempel på hur “annoterings-konfiguration” används