GraphQL API mit C#: Schritt-für-Schritt-Anleitung für .NET-Entwickler

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

Einführung in GraphQL und C#

GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufragen, die sie wirklich benötigen. Im Gegensatz zu REST, wo die Antwortstruktur festgelegt ist, erlaubt GraphQL eine flexible Gestaltung von Abfragen und liefert genau das, was benötigt wird. In diesem Tutorial werden wir durchgehen, wie man eine vollwertige GraphQL API auf der C# (.NET) Plattform unter Verwendung der Bibliothek Hot Chocolate erstellt.

Dieses Material wird sowohl für Anfänger als auch für erfahrene Entwickler nützlich sein, die einen modernen Ansatz zur API-Entwicklung erlernen möchten. Wir werden alle Phasen durchlaufen: von der Projekteinrichtung bis zur Implementierung von Abfragen und Mutationen. Am Ende des Artikels haben Sie einen funktionierenden GraphQL-Server, der zur Integration mit jedem Client bereit ist.



Installation und Projekteinrichtung

Als erstes müssen wir ein neues ASP.NET Core Projekt erstellen. Öffnen Sie das Terminal oder die Eingabeaufforderung und führen Sie den Befehl aus:

dotnet new web -n GraphQLDemocd GraphQLDemo

Jetzt fügen wir das Paket Hot Chocolate hinzu – die Hauptbibliothek für die Arbeit mit GraphQL in .NET:

dotnet add package HotChocolate.AspNetCore

Nach der Installation öffnen Sie die Datei Program.cs und konfigurieren Sie die Dienste. Hier ist die minimale Konfiguration zum Starten von GraphQL:

using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// GraphQL-Dienste hinzufügenbuilder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

// Middleware für GraphQL einbindenapp.MapGraphQL();

app.Run();

Beachten Sie: Wir haben die Klasse Query noch nicht erstellt. Dies ist unser Root-Typ, der die verfügbaren Abfragen definiert. Wir werden ihn im nächsten Abschnitt erstellen.



Schema-Definition: Typen und Resolver

Erstellung des Datenmodells

Zunächst definieren wir ein einfaches Datenmodell. Nehmen wir ein Buch:

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

Erstellung der Query-Klasse

Jetzt erstellen wir die Klasse Query, die die Daten zurückgibt. In Hot Chocolate sind Resolver gewöhnliche Methoden, die synchron oder asynchron sein können:

public class Query{    private static readonly List<Book> Books = new()    {        new Book { Id = "1", Title = "Krieg und Frieden", Author = "Leo Tolstoi", Year = 1869 },        new Book { Id = "2", Title = "Verbrechen und Strafe", Author = "Fjodor Dostojewski", Year = 1866 }    };

public IQueryable<Book> GetBooks() => Books.AsQueryable();

public Book? GetBook(string id) => Books.FirstOrDefault(b => b.Id == id);}

Die Methode GetBooks gibt eine Liste aller Bücher zurück, und GetBook gibt ein einzelnes Buch anhand der ID zurück. Hot Chocolate wandelt diese Methoden automatisch in Felder des GraphQL-Schemas um.

Typkonfiguration (optional)

Manchmal muss explizit angegeben werden, welche Felder verfügbar sein sollen. Dazu können Attribute oder die Fluent API verwendet werden. Ein Beispiel mit Attributen:

public class Book{    [GraphQLName("id")]    public string Id { get; set; }

[GraphQLNonNullType] public string Title { get; set; }

public string Author { get; set; } public int Year { get; set; }}

Starten Sie nun das Projekt mit dem Befehl dotnet run und gehen Sie im Browser zur Adresse http://localhost:5000/graphql. Sie sehen das integrierte Banana Cake Pop – eine Umgebung zum Testen von Abfragen.



Implementierung von Mutationen (Erstellen, Aktualisieren, Löschen)

Mutationen in GraphQL werden verwendet, um Daten zu ändern. Erstellen wir eine Klasse Mutation und fügen Methoden für die Arbeit mit Büchern hinzu.

                

Blogs

Buchempfehlungen