GraphQL API mit C#: Schritt-für-Schritt-Tutorial 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 auf der .NET-Plattform

GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten abzurufen, die sie tatsächlich benötigen. Im Gegensatz zu REST, wo die Antwortstruktur vom Server fest vorgegeben ist, erlaubt GraphQL eine flexible Gestaltung von Abfragen. In diesem Tutorial erstellen wir eine vollständige GraphQL-API in C# mit dem Framework Hot Chocolate – der beliebtesten Lösung für .NET.

Wir gehen den Weg von der Installation bis zur Erstellung komplexer Abfragen mit Mutationen und Subscriptions. Der Artikel richtet sich an Entwickler, die mit den Grundlagen von C# und ASP.NET Core vertraut sind.



1. Projekteinrichtung und Installation von Abhängigkeiten

Zunächst erstellen wir ein neues ASP.NET Core-Projekt. Sie können Visual Studio, Rider oder die Befehlszeile verwenden.

dotnet new web -n GraphQLDemocd GraphQLDemo

Jetzt installieren wir das Paket Hot Chocolate – das wichtigste Werkzeug für die Arbeit mit GraphQL in .NET:

dotnet add package HotChocolate.AspNetCore

Zusätzlich für die Arbeit mit Abfragen über die GraphQL-IDE (Banana Cake Pop) installieren wir:

dotnet add package HotChocolate.AspNetCore.Playground


1.1 Basiskonfiguration von Program.cs

Öffnen Sie die Datei Program.cs und konfigurieren Sie die Dienste:

var builder = WebApplication.CreateBuilder(args);

builder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

app.MapGraphQL();

app.Run();

Beachten Sie: Wir registrieren Query – dies ist unser Root-Typ zum Lesen von Daten. Er ist vorerst leer, aber wir werden ihn befüllen.



2. Erstellung des Datenmodells und der ersten Abfrage

GraphQL arbeitet mit Typen. Erstellen wir ein einfaches Modell Book:

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

Jetzt definieren wir die Klasse Query, die Daten zurückgibt:

public class Query{    private static List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 },        new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 }    };

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

public Book? GetBookById(int id) => _books.FirstOrDefault(b => b.Id == id);}

Starten Sie die Anwendung und öffnen Sie http://localhost:5000/graphql. Sie sehen Banana Cake Pop – die integrierte IDE zum Testen von Abfragen. Versuchen Sie Folgendes auszuführen:

{  books {    title    author  }}

Sie erhalten nur die Felder, die Sie angefordert haben – darin liegt die Stärke von GraphQL.



3. Mutationen zum Ändern von Daten

Mutationen sind das Äquivalent zu POST/PUT/DELETE in REST. Sie ermöglichen es, Daten auf dem Server zu ändern. Fügen wir die Möglichkeit hinzu, neue Bücher hinzuzufügen.



3.1 Definition des Eingabetyps

Erstellen wir eine Klasse für die Eingabedaten der Mutation:

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


3.2 Implementierung der Mutation

Fügen wir die Klasse Mutation hinzu:

public class Mutation{    private static List<Book> _books = new()    {        new Book { Id = 1, Title = "1984", Author = "George Orwell", Year = 1949 },        new Book { Id = 2, Title = "Clean Code", Author = "Robert C. Martin", Year = 2008 }    };

public Book AddBook(AddBookInput input) { var newBook = new Book { Id = _books.Max(b => b.Id) + 1, Title = input.Title, Author = input.Author, Year = input.Year }; _books.Add(newBook); return newBook; }

Blogs

Buchempfehlungen