CRUD-Aktionen in ASP.NET Core

Abgeschlossen

Unser Pizzadienst unterstützt CRUD-Vorgänge für eine Liste von Pizzas. Diese Vorgänge werden über HTTP-Verben ausgeführt, die über ASP.NET Core-Attribute zugeordnet werden. Wie Sie gesehen haben, wird das HTTP-Verb GET verwendet, um mindestens ein Element aus einem Dienst abzurufen. Solche Aktionen werden mit dem Attribut [HttpGet] versehen.

Die folgende Tabelle zeigt die Zuordnung der vier Vorgänge, die Sie für den Pizzadienst implementieren:

HTTP-Aktionsverb CRUD-Vorgang ASP.NET Core-Attribut
GET Lesen [HttpGet]
POST Erstellen [HttpPost]
PUT Aktualisieren [HttpPut]
DELETE Löschen [HttpDelete]

Sie haben bereits gesehen, wie GET-Aktionen funktionieren. Erfahren Sie mehr über POST-, PUT- und DELETE-Aktionen.

POST

Damit Benutzer dem Endpunkt ein neues Element hinzufügen können, müssen Sie die POST-Aktion mithilfe des [HttpPost]-Attributs implementieren. Wenn Sie das Element (in diesem Beispiel eine Pizza) als Parameter an die Methode übergeben, konvertiert ASP.NET Core automatisch den gesamten Anwendungs-/JSON-Code, der an den Endpunkt gesendet wird, in ein mit Daten aufgefülltes .NET-Pizza-Objekt.

Dies ist die Methodensignatur der Create-Methode, die Sie im nächsten Abschnitt implementieren:

[HttpPost]
public IActionResult Create(Pizza pizza)
{            
    // This code will save the pizza and return a result
}

Das [HttpPost]-Attribut ordnet an http://localhost:5000/pizza gesendete HTTP-POST-Anforderungen mithilfe der Create()-Methode zu. Anstatt eine Liste von Pizzas zurückzugeben (wie bei der Get()-Methode), gibt diese Methode eine IActionResult-Antwort zurück.

IActionResult informiert den Client darüber, ob die Anforderung erfolgreich war, und gibt die ID der neu erstellten Pizza an. IActionResult verwendet dazu standardmäßige HTTP-Statuscodes, sodass die Integration mit Clients unabhängig von der Sprache oder Plattform, mit/auf der sie ausgeführt werden, problemlos möglich ist.

ASP.NET Core
Aktionsergebnis
HTTP-Statuscode BESCHREIBUNG
CreatedAtAction 201 Die Pizza wurde dem In-Memory-Cache hinzugefügt.
Die Pizza ist, wie im HTTP-Anforderungsheader accept (standardmäßig JSON) definiert, im Antworttext im Medientyp enthalten.
impliziert BadRequest 400 Das pizza-Objekt des Anforderungstexts ist ungültig.

Glücklicherweise verfügt ControllerBase über Hilfsmethoden, die die entsprechenden HTTP-Antwortcodes und -Nachrichten für Sie erstellen. Wie diese Methoden funktionieren, erfahren Sie in der nächsten Übung.

PUT

Das Ändern oder Aktualisieren einer Pizza in unserem Bestand ähnelt der POST-Methode, die Sie implementiert haben. Aber diese Methode verwendet das Attribut [HttpPut] mit dem Parameter id zusätzlich zum Objekt Pizza, das aktualisiert werden muss:

[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
    // This code will update the pizza and return a result
}

Jede in der Aktion oben verwendete ActionResult-Instanz wird in der folgenden Tabelle dem entsprechenden HTTP-Statuscode zugeordnet:

ASP.NET Core
Aktionsergebnis
HTTP-Statuscode BESCHREIBUNG
NoContent 204 Die Pizzadaten wurden im In-Memory-Cache aktualisiert.
BadRequest 400 Der Id-Wert des Anforderungstexts entspricht nicht dem id-Wert der Route.
impliziert BadRequest 400 Das Pizza-Objekt des Anforderungstexts ist ungültig.

Delete

Eine der einfacher zu implementierenden Aktionen ist die Aktion DELETE, die nur den Parameter id der Pizza verwendet, die aus dem In-Memory-Cache entfernt werden soll:

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    // This code will delete the pizza and return a result
}

Jede in der Aktion oben verwendete ActionResult-Instanz wird in der folgenden Tabelle dem entsprechenden HTTP-Statuscode zugeordnet:

ASP.NET Core
Aktionsergebnis
HTTP-Statuscode BESCHREIBUNG
NoContent 204 Die Pizza wurde aus dem In-Memory-Cache gelöscht.
NotFound 404 Eine Pizza, die mit dem angegebenen id-Parameter übereinstimmt, ist nicht im In-Memory-Cache enthalten.

In der Übung in der folgenden Lektion wird veranschaulicht, wie Sie jede dieser vier Aktionen in der Web-API unterstützen.

Überprüfen Sie Ihr Wissen

1.

Angenommen, Sie müssen den Namen eines Produkts aktualisieren. Welches HTTP-Aktionsverb eignet sich hierzu am besten?

2.

In welchem Szenario ist die Rückgabe des HTTP-Statuscodes „404“ am besten geeignet, und wie erfolgt sie in ASP.NET Core?