Refit C# (.NET): Komplette Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Refit für C# (.NET): Type-safe REST-Client

1. Was ist Refit und warum braucht man es?

Refit ist eine Open-Source-Bibliothek für die .NET-Plattform, die automatisch Implementierungen von HTTP-Clients auf Basis von vom Entwickler definierten Interfaces generiert. Sie verwandelt ein normales C#-Interface in einen vollwertigen REST-Client und erspart dir die manuelle Arbeit mit HTTP-Anfragen, JSON-Serialisierung/Deserialisierung und Fehlerbehandlung.

Das Hauptproblem, das Refit löst, ist die Vermeidung von Code-Duplikaten bei der Arbeit mit REST-APIs. Anstatt für jeden Endpunkt eine separate Methode mit HttpClient zu schreiben, Header zu setzen und Antworten zu verarbeiten, deklarierst du einfach ein Interface mit Methoden, die mit Refit-Attributen versehen sind. Die Bibliothek generiert die Implementierung automatisch – entweder mit HttpClientFactory (empfohlen) oder direkt mit HttpClient.

Refit ist besonders nützlich bei der Entwicklung von Microservices, der Integration von Drittanbieter-APIs (GitHub, Stripe, Telegram usw.) und in allen Projekten, die eine typsichere Kommunikation mit HTTP-Diensten erfordern. Es unterstützt alle wichtigen HTTP-Methoden (GET, POST, PUT, DELETE, PATCH), Header, Query-Parameter, Request-Body, Multipart-Formulare und Dateien.

2. Installation

Refit wird über NuGet verteilt. Verwende einen der folgenden Befehle zur Installation:

# Über die .NET CLI
dotnet add package Refit

# Über die Package Manager Console (Visual Studio)
Install-Package Refit

# Oder über den NuGet Package Manager in der IDE

Für asynchrone Methoden und die Integration mit ASP.NET Core wird außerdem das Paket Refit.HttpClientFactory empfohlen:

dotnet add package Refit.HttpClientFactory

Wenn du System.Text.Json verwendest (Standard in .NET Core 3.1+), sind keine weiteren Pakete nötig. Für Newtonsoft.Json installiere Refit.Newtonsoft.Json.

3. Schnellstart – Minimales Arbeitsbeispiel

Wir erstellen einen einfachen Client, um Daten von JSONPlaceholder (einer Test-REST-API) abzurufen.

Schritt 1: Definiere ein Datenmodell:

public class Todo
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public string Title { get; set; }
    public bool Completed { get; set; }
}

Schritt 2: Erstelle ein Interface mit Refit-Attributen:

using Refit;

public interface ITodoApi
{
    [Get("/todos/{id}")]
    Task<Todo> GetTodoAsync(int id);

    [Get("/todos")]
    Task<List<Todo>> GetAllTodosAsync();
}

Schritt 3: Verwende Refit, um den Client zu erstellen:

using Refit;

class Program
{
    static async Task Main(string[] args)
    {
        // Client direkt erstellen (ohne DI)
        var todoApi = RestService.For<ITodoApi>("https://jsonplaceholder.typicode.com");
        
        // Ein einzelnes Todo abrufen
        var todo = await todoApi.GetTodoAsync(1);
        Console.WriteLine($"Todo: {todo.Title}, Completed: {todo.Completed}");
        
        // Alle Todos abrufen
        var todos = await todoApi.GetAllTodosAsync();
        Console.WriteLine($"Total todos: {todos.Count}");
    }
}

Dieses Beispiel zeigt die grundlegende Funktionsweise: Du beschreibst ein Interface, und Refit generiert die Implementierung, die HTTP-Anfragen ausführt und Antworten deserialisiert.

4. Wichtige Methoden/Funktionen/Klassen

4.1. RestService.For<T>()

Signatur: public static T For<T>

Empfehlungen