Denna starter förenklar användningen av Feign som REST-klient, via Spring Cloud OpenFeign. För att använda den, lägg till följande i tjänstens pom.xml
:
...
[1]
Ifall FeignConfiguration
från Dept-44 importeras så läggs funktionalitet för loggning av request och response, requestId-hantering samt hantering av truststore för domän sundsvall.se (för hantering av anrop mot andra mikrotjänster i WSO2) till.[2]
Möjliggör ytterligare anpassning av Feign-klienten i de fall stöd saknas i ramverket.[3]
Anger den error decoder som ska användas för att översätta de fel som kastas av integrationen.[4]
Anger de interceptorer som ska användas för att förändra det utgående anropet före det skickas.[5]
Anger de anrops-alternativ som ska gälla för klienten avseende timeouts och follow-redirects[6]
En alternativ metod till [5]
där follow-redirects default sätts till true[7]
Anger att ett nytt anrop med förnyat access token ska ske ifall autentiseringsuppgifterna har gått ut. [8]
Skapar den FeignBuilderCustomizer
som sedan används av OpenFeign-ramverket när klienten skapas.
Endast ([4]
kan användas repetitivt för all lägga till multipla RequestInterceptor
).
...
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.:
Code Block | ||
---|---|---|
| ||
public interface GithubClient {
@GetMapping("users/{user}/repos")
List<Repo> getRepositories(@PathVariable("user") String user);
} |
...
Code Block | ||
---|---|---|
| ||
GithubClient ghClient = 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]
...
List<Repo> repos = ghClient.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.:
Code Block | ||
---|---|---|
| ||
@Bean
ClientRegistration clientRegistration() {
return ClientRegistration.withRegistrationId("someId")
.clientId("someClientId")
.clientSecret("someClientSecret")
.tokenUri("https://somehost.com/token")
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
.build();
} |
...
Alternativ 2 - Annoteringar
Först och främst behövs ett klient-interface:
...