CRUD-acties in ASP.NET Core

Voltooid

Onze pizzaservice ondersteunt CRUD-bewerkingen voor een lijst met pizza's. Deze bewerkingen worden uitgevoerd via HTTP-werkwoorden, die worden toegewezen via ASP.NET Core-kenmerken. Zoals u hebt gezien, wordt het HTTP-werkwoord GET gebruikt om een of meer items op te halen uit een service. Een dergelijke actie wordt voorzien van het [HttpGet]-kenmerk.

In de volgende tabel ziet u de toewijzing van de vier bewerkingen die u implementeert voor de pizzaservice:

HTTP-actieopdracht CRUD-bewerking ASP.NET Core-kenmerk
GET Read [HttpGet]
POST Maken [HttpPost]
PUT Bijwerken [HttpPut]
DELETE Delete [HttpDelete]

U hebt al gezien hoe GET acties werken. Laten we meer weten over POST, PUTen DELETE acties.

POSTEN

Als u wilt dat gebruikers een nieuw item aan het eindpunt kunnen toevoegen, moet u de POST actie implementeren met behulp van het [HttpPost] kenmerk. Wanneer u het item (in dit voorbeeld een pizza) doorgeeft aan de methode als parameter, converteert ASP.NET Core elke toepassing/JSON die naar het eindpunt wordt verzonden, automatisch naar een gevuld .NET-object Pizza .

Hier volgt de methodehandtekening van de Create methode die u in de volgende sectie gaat implementeren:

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

Het [HttpPost] kenmerk wijst HTTP-aanvragen POST toe die met behulp van de http://localhost:5000/pizza methode worden Create() verzonden. In plaats van een lijst met pizza's te retourneren, zoals we met de Get() methode hebben gezien, retourneert deze methode een IActionResult antwoord.

IActionResult laat de client weten of de aanvraag is geslaagd en geeft de id van de zojuist gemaakte pizza. IActionResult maakt gebruik van standaard HTTP-statuscodes, zodat deze eenvoudig kan worden geïntegreerd met clients, ongeacht de taal of het platform waarop ze worden uitgevoerd.

ASP.NET Core
resultaat van actie
HTTP-statuscode Beschrijving
CreatedAtAction 201 De pizza is toegevoegd aan de cache in het geheugen.
De pizza wordt opgenomen in de hoofdtekst van het antwoord in het mediatype, zoals gedefinieerd in de accept HTTP-aanvraagheader (standaard JSON).
BadRequest wordt geïmpliceerd 400 Object pizza van de aanvraagtekst is ongeldig.

Gelukkig ControllerBase zijn er hulpprogrammamethoden waarmee de juiste HTTP-antwoordcodes en -berichten voor u worden gemaakt. In de volgende oefening ziet u hoe deze methoden werken.

PUT

Het wijzigen of bijwerken van een pizza in onze voorraad is vergelijkbaar met de POST-methode die u hebt geïmplementeerd, maar het gebruikt het [HttpPut] kenmerk en neemt de id parameter in aanvulling op het Pizza object dat moet worden bijgewerkt:

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

Elk ActionResult exemplaar dat in de voorgaande actie wordt gebruikt, wordt toegewezen aan de bijbehorende HTTP-statuscode in de volgende tabel:

ASP.NET Core
resultaat van actie
HTTP-statuscode Beschrijving
NoContent 204 De pizza is bijgewerkt in de cache in het geheugen.
BadRequest 400 De Id-waarde van de aanvraagtekst komt niet overeen met de id- waarde van de route.
BadRequest wordt geïmpliceerd 400 Object Pizza van de aanvraagtekst is ongeldig.

DELETE

Een van de eenvoudigere acties die u kunt implementeren, is de DELETE actie die alleen de id parameter van de pizza uitvoert om uit de cache in het geheugen te verwijderen:

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

Elk ActionResult exemplaar dat in de voorgaande actie wordt gebruikt, wordt toegewezen aan de bijbehorende HTTP-statuscode in de volgende tabel:

ASP.NET Core
resultaat van actie
HTTP-statuscode Beschrijving
NoContent 204 De pizza is verwijderd uit de cache in het geheugen.
NotFound 404 Een pizza die overeenkomt met de opgegeven id parameter bestaat niet in de cache in het geheugen.

De oefening in de volgende les laat zien hoe u elk van de vier acties in de web-API kunt ondersteunen.

Kennis testen

1.

Stel dat u de naam van een product wilt bijwerken. Welke HTTP-actieopdracht is het meest geschikt voor deze aanvraag?

2.

In welk scenario is het het meest geschikt om een HTTP 404-statuscode te retourneren en hoe wordt dit bereikt in ASP.NET Core?