GraphQL für 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 C# (.NET) — GraphQL.NET



GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufragen, die sie wirklich benötigen. Im .NET-Ökosystem ist eine der beliebtesten Implementierungen die Bibliothek GraphQL.NET (auch bekannt als graphql-dotnet). Sie bietet leistungsstarke Werkzeuge zur Erstellung flexibler, typisierter und effizienter APIs auf der C# (.NET)-Plattform.



In diesem Artikel werden wir im Detail betrachten, wie man GraphQL.NET verwendet, die wichtigsten Konzepte erläutern und praktische Codebeispiele geben.



Was ist GraphQL.NET?



GraphQL.NET ist eine Open-Source-Bibliothek, die die GraphQL-Spezifikation für die .NET-Plattform implementiert. Sie unterstützt sowohl .NET Core als auch .NET Framework. Die wichtigsten Funktionen:



  • Erstellung streng typisierter Schemata in C#.
  • Unterstützung von Abfragen (Query), Mutationen (Mutation) und Subscriptions (Subscription).
  • Integrierte Validierung und Ausführung von Abfragen.
  • Integration mit gängigen Web-Frameworks (ASP.NET Core, Nancy und andere).
  • Unterstützung von Subscriptions über WebSockets (SignalR).


Installation und Konfiguration



Um zu beginnen, installieren Sie das Paket über NuGet:



dotnet add package GraphQLdotnet add package GraphQL.SystemTextJson  // für JSON-Serialisierung


Wenn Sie ASP.NET Core verwenden, installieren Sie zusätzlich:



dotnet add package GraphQL.Server.Transports.AspNetCoredotnet add package GraphQL.Server.Ui.Playground  // integrierte UI zum Testen


Erstellung des ersten Schemas



GraphQL basiert auf einem Schema, das die Datentypen und verfügbaren Operationen definiert. Betrachten wir ein einfaches Beispiel – eine API zum Abrufen von Informationen über Bücher.



Schritt 1. Definieren Sie das Datenmodell:



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


Schritt 2. Erstellen Sie GraphQL-Typen:



public class BookType : ObjectGraphType<Book>{    public BookType()    {        Field(x => x.Id).Description("Buch-ID");        Field(x => x.Title).Description("Buchtitel");        Field(x => x.Author).Description("Autor");        Field(x => x.Pages).Description("Seitenanzahl");    }}


Schritt 3. Definieren Sie die Stammabfrage (Query):



public class BookQuery : ObjectGraphType{    public BookQuery(IDataStore dataStore)    {        Field<BookType>("book")            .Arguments(new QueryArguments(new QueryArgument<StringGraphType> { Name = "id" }))            .Resolve(context => dataStore.GetBookById(context.GetArgument<string>("id")));

Field<ListGraphType<BookType>>("books") .Resolve(context => dataStore.GetAllBooks()); }}


Schritt 4. Bauen Sie das Schema zusammen:



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


Integration mit ASP.NET Core



Registrieren Sie die Dienste in Program.cs (oder Startup.cs):



builder.Services.AddGraphQL(b => b    .AddSystemTextJson()    .AddSchema<BookSchema>()    .AddGraphTypes(typeof(BookType).Assembly));

builder.Services.AddScoped<IDataStore, InMemoryDataStore>();


Fügen Sie die Middleware hinzu:



app.UseGraphQL<BookSchema>();  // Standard-Endpunkt /graphqlapp.UseGraphQLPlayground();    // UI zum Testen (optional)


Ausführen einer Abfrage



Jetzt können Sie

Empfehlungen