Skip to content

vplemyannik/Vp.Rest.Client

Repository files navigation

Vp.Rest.Client

Is open source project that allow you create rest client. How it works? You should defined the api contract by interface. Thats all! The library implements your interface at runtime.

Example

  1. Define contract
    public interface TodosApiContract
    {
        [Rest(RestMethod.GET, "todos/{todosId}")]
        Task<Todos> GetTodos(int todosId);
        
        [Rest(RestMethod.POST, "todos")]
        Task<Todos> CreateTodos(Todos todos);
        
        [Rest(RestMethod.PUT, "todos/{todosId}")]
        Task UpdateTodos(Todos todos, int todosId);
        
        [Rest(RestMethod.DELETE, "todos/{todosId}")]
        Task DeleteTodos(int todosId);
    }
  1. Define Settings for client
 var restFactory = new RestImplementationBuilder()
                .WithBaseUrl("https://jsonplaceholder.typicode.com/")
                .WithTimeout(TimeSpan.FromSeconds(60))
                .Build();
  1. Usage
var todos = new Todos
{
    UserId = 1,
    Title = "title"
    Completed = false
};

 var  apiClient = restFactory.Create<TodosApiContract>();
 todos = await apiClient.CreateTodos(todos);
 Todos result = await apiClient.GetTodos(todos.Id);
 await apiClient.DeleteTodos(result.Id);

You can also:

  • Add logging
  • Add Basic Authorization
  • Add yourown Delegating handler

Integration with .Net Core DI

services.RegisterClients(restBuilder =>
    {
        restBuilder.AddClient<TodosApiContract>("https://jsonplaceholder.typicode.com/");
    });

And getting from service provider

var client = provider.GetRequiredService<TodosApiContract>();

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages