Kulturzentrum Marstall Ahrensburg und Kurs:Täglich Routing Übungen: Unterschied zwischen den Seiten
(Unterschied zwischen Seiten)
Keine Bearbeitungszusammenfassung |
Die Seite wurde neu angelegt: „== Moderne MapGet-Syntax (.NET 6+) == <syntaxhighlight lang="csharp"> // Minimal-API: Endpunkte direkt am app-Objekt definieren var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // GET-Endpoint für /hello app.MapGet("/hello", () => "Hallo Welt!"); // GET-Endpoint mit Parameter app.MapGet("/user/{name}", (string name) => $"Hallo, {name}!"); // GET-Endpoint mit mehreren Parametern app.MapGet("/add/{a:int}/{b:int}", (int a, in…“ |
||
| Zeile 1: | Zeile 1: | ||
== Moderne MapGet-Syntax (.NET 6+) == | |||
== | <syntaxhighlight lang="csharp"> | ||
* | // Minimal-API: Endpunkte direkt am app-Objekt definieren | ||
var builder = WebApplication.CreateBuilder(args); | |||
var app = builder.Build(); | |||
// GET-Endpoint für /hello | |||
app.MapGet("/hello", () => "Hallo Welt!"); | |||
// GET-Endpoint mit Parameter | |||
app.MapGet("/user/{name}", (string name) => $"Hallo, {name}!"); | |||
// GET-Endpoint mit mehreren Parametern | |||
app.MapGet("/add/{a:int}/{b:int}", (int a, int b) => $"Summe: {a + b}"); | |||
// POST-Endpoint (als Vergleich) | |||
app.MapPost("/echo", async (HttpContext ctx) => | |||
{ | |||
using var reader = new StreamReader(ctx.Request.Body); | |||
var body = await reader.ReadToEndAsync(); | |||
return Results.Text($"Empfangen: {body}"); | |||
}); | |||
app.Run(); | |||
</syntaxhighlight> | |||
'''Kommentar''': | |||
* Kein explizites <code>UseRouting</code> und <code>UseEndpoints</code> nötig! | |||
* Routen-Parameter werden direkt als Methodenparameter übergeben (z.B. <code>(string name)</code>). | |||
* Typen (int, string, etc.) dienen als Constraints. | |||
* Für komplexe Logik kann auch ein Lambda mit <code>HttpContext</code> verwendet werden. | |||
'''Übung''': | |||
1. Schreibe einen neuen Endpoint <code>/greet/{vorname}/{nachname}</code>, der <code>Hallo, Vorname Nachname!</code> zurückgibt. | |||
2. Ergänze einen Endpoint, der das aktuelle Datum unter <code>/now</code> ausgibt. | |||
---- | |||
= Vorteile der modernen Form = | |||
* Kürzer, lesbarer, weniger Boilerplate. | |||
* Ideal für kleine APIs und Lernprojekte. | |||
* Alle Constraints, Parameter etc. funktionieren wie gewohnt. | |||
Aktuelle Version vom 24. Juni 2025, 02:43 Uhr
Moderne MapGet-Syntax (.NET 6+)
// Minimal-API: Endpunkte direkt am app-Objekt definieren
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// GET-Endpoint für /hello
app.MapGet("/hello", () => "Hallo Welt!");
// GET-Endpoint mit Parameter
app.MapGet("/user/{name}", (string name) => $"Hallo, {name}!");
// GET-Endpoint mit mehreren Parametern
app.MapGet("/add/{a:int}/{b:int}", (int a, int b) => $"Summe: {a + b}");
// POST-Endpoint (als Vergleich)
app.MapPost("/echo", async (HttpContext ctx) =>
{
using var reader = new StreamReader(ctx.Request.Body);
var body = await reader.ReadToEndAsync();
return Results.Text($"Empfangen: {body}");
});
app.Run();
Kommentar:
- Kein explizites
UseRoutingundUseEndpointsnötig! - Routen-Parameter werden direkt als Methodenparameter übergeben (z.B.
(string name)). - Typen (int, string, etc.) dienen als Constraints.
- Für komplexe Logik kann auch ein Lambda mit
HttpContextverwendet werden.
Übung:
1. Schreibe einen neuen Endpoint /greet/{vorname}/{nachname}, der Hallo, Vorname Nachname! zurückgibt.
2. Ergänze einen Endpoint, der das aktuelle Datum unter /now ausgibt.
Vorteile der modernen Form
- Kürzer, lesbarer, weniger Boilerplate.
- Ideal für kleine APIs und Lernprojekte.
- Alle Constraints, Parameter etc. funktionieren wie gewohnt.