CRUD-åtgärder i ASP.NET Core

Slutförd

Vår pizzatjänst stöder CRUD-åtgärder för en lista över pizzor. Dessa åtgärder utförs via HTTP-verb, som mappas via ASP.NET Core-attribut. Som du såg används HTTP-verbet GET för att hämta ett eller flera objekt från en tjänst. Den typen av åtgärd kommenteras med [HttpGet]-attributet.

I följande tabell visas mappningen av de fyra åtgärder som du implementerar för pizzatjänsten:

HTTP-åtgärdsverb CRUD-åtgärd ASP.NET Core-attribut
GET Lästa [HttpGet]
POST Skapa [HttpPost]
PUT Uppdatera [HttpPut]
DELETE Delete [HttpDelete]

Du har redan sett hur GET åtgärder fungerar. Nu ska vi lära oss mer om POST, PUToch DELETE åtgärder.

POST

Om du vill göra det möjligt för användare att lägga till ett nytt objekt i slutpunkten måste du implementera POST åtgärden med hjälp av attributet [HttpPost] . När du skickar objektet (i det här exemplet en pizza) till metoden som en parameter konverterar ASP.NET Core automatiskt alla program/JSON som skickas till slutpunkten till ett ifyllt .NET-objekt Pizza .

Här är metodsignaturen för den Create metod som du implementerar i nästa avsnitt:

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

Attributet [HttpPost] mappar HTTP-begäranden POST som skickas till http://localhost:5000/pizza med hjälp Create() av -metoden. I stället för att returnera en lista över pizzor, som vi såg med metoden, returnerar den Get() här metoden ett IActionResult svar.

IActionResult meddelar klienten om begäran lyckades och tillhandahåller ID:t för den nyligen skapade pizzan. IActionResult använder standard-HTTP-statuskoder, så att de enkelt kan integreras med klienter oavsett vilket språk eller vilken plattform de körs på.

ASP.NET Core
åtgärdsresultat
HTTP-statuskod beskrivning
CreatedAtAction 201 Pizzan lades till i minnesintern cache.
Pizzan ingår i svarstexten i medietypen enligt definitionen i accept HTTP-begärandehuvudet (JSON som standard).
BadRequest är underförstått 400 Begärandetextens pizza-objekt är ogiltigt.

Lyckligtvis ControllerBase har verktygsmetoder som skapar lämpliga HTTP-svarskoder och -meddelanden åt dig. Du ser hur dessa metoder fungerar i nästa övning.

PUT

Att ändra eller uppdatera en pizza i vårt lager liknar den POST-metod som du implementerade, men den [HttpPut] använder attributet och tar in parametern id utöver det Pizza objekt som behöver uppdateras:

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

Varje ActionResult instans som används i föregående åtgärd mappas till motsvarande HTTP-statuskod i följande tabell:

ASP.NET Core
åtgärdsresultat
HTTP-statuskod beskrivning
NoContent 204 Pizzan uppdaterades i minnesintern cache.
BadRequest 400 Begärandetextens Id-värde matchar inte vägens id-värde.
BadRequest är underförstått 400 Begärandetextens Pizza-objekt är ogiltigt.

DELETE

En av de enklare åtgärderna att implementera är åtgärden DELETE , som bara tar in parametern id i pizzan för att ta bort från minnesintern cache:

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

Varje ActionResult instans som används i föregående åtgärd mappas till motsvarande HTTP-statuskod i följande tabell:

ASP.NET Core
åtgärdsresultat
HTTP-statuskod beskrivning
NoContent 204 Pizzan togs bort från minnesintern cacheminnet.
NotFound 404 En pizza som matchar den angivna id parametern finns inte i minnesintern cache.

Övningen i nästa lektion visar hur du stöder var och en av de fyra åtgärderna i webb-API:et.