Using interfaces with Refit attributes.
using Jincod.AspNetCore.ActionModelConvention.Refit;
// ...
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddMvc(mvc =>
{
mvc.Conventions.Add(new RefitAttributeConvention("/api"));
});
// ...
}