GraphQL in C# (.NET): Vollständiger Leitfaden zur Bibliothek GraphQL.NET

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

GraphQL-Bibliothek für C# (.NET): GraphQL.NET



GraphQL ist eine moderne Abfragesprache für APIs, die es Clients ermöglicht, nur die benötigten Daten anzufragen, Redundanzen zu reduzieren und die Anwendungsleistung zu steigern. Für die .NET-Plattform gibt es die leistungsstarke Bibliothek GraphQL.NET, die es C#-Entwicklern ermöglicht, serverseitige Komponenten zu erstellen, die vollständig mit der GraphQL-Spezifikation kompatibel sind. In diesem Artikel werden wir ihre Funktionen, Vorteile und praktische Beispiele im Detail besprechen.



Was ist GraphQL.NET?



GraphQL.NET ist eine Open-Source-Bibliothek für C# (.NET), die die GraphQL-Spezifikation implementiert. Sie bietet Werkzeuge zur Definition von Schemas (Typen, Abfragen, Mutationen und Subscriptions), zur Verarbeitung eingehender Anfragen, Validierung und Ausführungslogik. Die Bibliothek wird aktiv von der Community unterstützt und in Produktionsumgebungen eingesetzt.



Wichtige Funktionen:

  • Flexible Schema-Definition — Typen, Interfaces, Union-Typen und Enumerationen.
  • Unterstützung für Abfragen (Query), Mutationen (Mutation) und Subscriptions (Subscription).
  • Integration mit DI-Containern (z. B. Microsoft.Extensions.DependencyInjection).
  • Validierung und Parsing von Anfragen auf der Serverseite.
  • Unterstützung von DataLoader zur Optimierung von N+1-Abfragen.
  • Werkzeuge für Tests und Debugging.


Installation und Einrichtung



Die Installation erfolgt über den NuGet Package Manager. Führen Sie den folgenden Befehl aus:

dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson


Für ASP.NET Core wird außerdem das Paket für Middleware benötigt:

dotnet add package GraphQL.Server.Transports.AspNetCore


Erstellen einer einfachen GraphQL-API



1. Definition von Datentypen



Erstellen Sie zunächst ein Datenmodell und den entsprechenden GraphQL-Typ:

public class Book{    public int Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }}

public class BookType : ObjectType<Book>{ protected override void Configure(IObjectTypeDescriptor<Book> descriptor) { descriptor.Field(b => b.Id).Type<NonNullType<IntType>>(); descriptor.Field(b => b.Title).Type<NonNullType<StringType>>(); descriptor.Field(b => b.Author).Type<StringType>(); }}


2. Definition von Abfragen (Query)



Erstellen Sie nun eine Query-Klasse, die die Abfragen verarbeitet:

public class Query{    private readonly List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell" },        new Book { Id = 2, Title = "Brave New World", Author = "Aldous Huxley" }    };

public Book GetBook(int id) { return _books.FirstOrDefault(b => b.Id == id); }

public List<Book> GetBooks() { return _books; }}


Registrieren Sie diese Klasse dann im Schema:

public class BookSchema : Schema{    public BookSchema(IServiceProvider provider) : base(provider)    {        Query = provider.GetRequiredService<Query>();    }}


3. Konfiguration in Startup.cs



Fügen Sie Dienste und Middleware in ASP.NET Core hinzu:

public void ConfigureServices(IServiceCollection services){    services.AddGraphQL(builder => builder        .AddSchema<BookSchema>()        .AddSystemTextJson());}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ app.UseGraphQL<BookSchema>(); app.UseGraphQLPlayground(); // Für Tests}


Mutationen (Mutation) zum Ändern von Daten



Fügen wir die Möglichkeit hinzu, Bücher über Mutationen hinzuzufügen:

Empfehlungen