Einleitung: REST API in C# – ganz einfach
\nREST 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.
\nBereit? Los geht's!
\n\nSchritt 1: Projekterstellung und Umgebungseinrichtung
\nAls 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:
\ndotnet new webapi -n TodoApi\ncd TodoApi\nDieser 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.
Fügen Sie nun die Unterstützung für Entity Framework Core zur Arbeit mit der Datenbank hinzu. Installieren Sie die erforderlichen Pakete:
\ndotnet add package Microsoft.EntityFrameworkCore.InMemory\ndotnet add package Microsoft.EntityFrameworkCore.Design\nWir 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\nSchritt 2: Erstellung des Datenmodells und des Datenbankkontexts
\nErstellen wir das Modell TodoItem. Erstellen Sie im Ordner Models die Datei TodoItem.cs:
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}\nErstellen Sie nun den Datenbankkontext. Fügen Sie im Ordner Data (falls nicht vorhanden, erstellen Sie ihn) die Datei TodoContext.cs hinzu:
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}\nRegistrieren Sie den Kontext in Program.cs:
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\nSchritt 3: Schreiben des Controllers mit CRUD-Operationen
\nErstellen wir einen Controller für die Arbeit mit Aufgaben. Fügen Sie im Ordner Controllers die Datei TodoItemsController.cs hinzu:
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