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
:
...
([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 3 - annoteringarAlternativ 2 - Annoteringar
Först och främst behövs ett klient-interface:
...