Skip to content

ENH: Add HttpClientContext.create() method to obtain a http client implementation #10

Closed
@rbygrave

Description

@rbygrave

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");

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions