Closed
Description
1. Define a @Client
interface
@Client
@Path("users")
public interface GitHubUsers {
@Get("{user}/repos")
List<Repo> listRepos(String user);
...
}
2. avaje-http-client-generator
Use avaje-http-client-generator to generate a client that implements the interface. It uses @Client
[or @Client.Import
] annotation to find the interfaces that it should generate the http client code for.
3. HttpClientContext.create(...)
final HttpClientContext clientContext =
HttpClientContext.newBuilder()
.withBaseUrl("https://api.github.com")
.withRequestListener(new RequestLogger())
.withBodyAdapter(new JacksonBodyAdapter(objectMapper))
.build();
GitHubUsers client = clientContext.create(GitHubUsers.class);
final List<Repo> repos = client.listRepos("rbygrave");