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.
- 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);
}
- Define Settings for client
var restFactory = new RestImplementationBuilder()
.WithBaseUrl("https://jsonplaceholder.typicode.com/")
.WithTimeout(TimeSpan.FromSeconds(60))
.Build();
- 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
services.RegisterClients(restBuilder =>
{
restBuilder.AddClient<TodosApiContract>("https://jsonplaceholder.typicode.com/");
});
And getting from service provider
var client = provider.GetRequiredService<TodosApiContract>();