So schreiben Sie eine REST API in C# in 30 Minuten: Schritt-für-Schritt-Anleitung

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

Einleitung: REST API in C# – ganz einfach

\n

REST API (Representational State Transfer) ist ein Architekturstil zur Erstellung von Webdiensten, der heute in praktisch jeder modernen Anwendung verwendet wird. Wenn Sie schnell lernen möchten, Backend in C# zu schreiben, ist ASP.NET Core die beste Wahl für den Einstieg. In diesem Artikel erstellen wir in 30 Minuten eine vollwertige REST API zur Verwaltung einer Aufgabenliste (Todo List). Sie erfahren, wie Sie das Projekt einrichten, Controller schreiben, eine Datenbank anbinden und die API über Swagger testen.

\n

Bereit? Los geht's!

\n\n

Schritt 1: Projekterstellung und Umgebungseinrichtung

\n

Als Erstes benötigen Sie das installierte .NET SDK (Version 6.0 oder neuer). Sie können es von der offiziellen Microsoft-Website herunterladen. Nach der Installation öffnen Sie ein Terminal oder die Eingabeaufforderung und erstellen ein neues Projekt:

\n
dotnet new webapi -n TodoApi\ncd TodoApi
\n

Dieser Befehl erstellt eine Web-API-Vorlage mit vorinstalliertem Swagger. Öffnen Sie das Projekt in Visual Studio Code oder einer anderen IDE. Die Projektstruktur enthält bereits die Ordner Controllers, Models und die Datei Program.cs.

\n

Fügen Sie nun die Unterstützung für Entity Framework Core zur Arbeit mit der Datenbank hinzu. Installieren Sie die erforderlichen Pakete:

\n
dotnet add package Microsoft.EntityFrameworkCore.InMemory\ndotnet add package Microsoft.EntityFrameworkCore.Design
\n

Wir verwenden der Einfachheit halber eine InMemory-Datenbank – die Daten werden im Arbeitsspeicher gespeichert. Für die Produktion können Sie diese durch SQL Server oder PostgreSQL ersetzen.

\n\n

Schritt 2: Erstellung des Datenmodells und des Datenbankkontexts

\n

Erstellen wir das Modell TodoItem. Erstellen Sie im Ordner Models die Datei TodoItem.cs:

\n
namespace TodoApi.Models;\n\npublic class TodoItem\n{\n    public long Id { get; set; }\n    public string? Title { get; set; }\n    public bool IsComplete { get; set; }\n}
\n

Erstellen Sie nun den Datenbankkontext. Fügen Sie im Ordner Data (falls nicht vorhanden, erstellen Sie ihn) die Datei TodoContext.cs hinzu:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Models;\n\nnamespace TodoApi.Data;\n\npublic class TodoContext : DbContext\n{\n    public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }\n    public DbSet<TodoItem> TodoItems { get; set; }\n}
\n

Registrieren Sie den Kontext in Program.cs:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddDbContext<TodoContext>(opt =>\n    opt.UseInMemoryDatabase("TodoList"));\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\napp.UseAuthorization();\napp.MapControllers();\napp.Run();
\n\n

Schritt 3: Schreiben des Controllers mit CRUD-Operationen

\n

Erstellen wir einen Controller für die Arbeit mit Aufgaben. Fügen Sie im Ordner Controllers die Datei TodoItemsController.cs hinzu:

\n
using Microsoft.AspNetCore.Mvc;\nusing Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\nusing TodoApi.Models;\n\nnamespace TodoApi.Controllers;\n\n[Route("api/[controller]")]\n[ApiController]\npublic class TodoItemsController : ControllerBase\n{\n    private readonly TodoContext _context;\n\n    public TodoItemsController(TodoContext context)\n    {\n        _context = context;\n    }\n\n    // GET: api/TodoItems\n    [HttpGet]\n    public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()\n    {\n        return await _context.TodoItems.ToListAsync();\n    }\n\n    // GET: api/TodoItems/5\n    [HttpGet("{id}")]\n    public async Task<ActionResult<TodoItem>> GetTodoItem(long id)\n    {\n        var todoItem = await                

Blogs

Buchempfehlungen