CRUD-Aktionen in ASP.NET Core
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.