Akce CRUD v ASP.NET Core

Dokončeno

Naše služba pizzy podporuje operace C reate, R ead, U pdate, D elete (CRUD) pro seznam pizz. Tyto operace se provádějí pomocí operací akcí HTTP, které se mapují pomocí ASP.NET Core atributů. Jak jste viděli, příkaz akce HTTP GET slouží k načtení jedné nebo více položek ze služby. Taková akce je anotována atributem [HttpGet].

Následující tabulka ukazuje mapování čtyř operací, které pro naši pizzerii provádíme:

Příkaz akce HTTP Operace CRUD Atribut ASP.NET Core
GET Číst [HttpGet]
POST Vytvořit [HttpPost]
PUT Aktualizovat [HttpPut]
DELETE Odstranit [HttpDelete]

Už jste viděli, jak fungují akce GET. Pojďme se dozvědět více o akcích POST, PUT a DELETE.

POST

Aby měl koncový bod možnost přidat novou položku, musíme implementovat akci POST pomocí [HttpPost]. Předáním položky (v tomto příkladu Pizza) do metody jako parametru převede ASP.NET Core automaticky všechny aplikace/json odeslané do koncového bodu na naplněný objekt .NET Pizza.

Tady je podpis metody, Create kterou budete implementovat v další části:

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

Atribut [HttpPost] bude mapovat požadavky HTTP POST odeslané http://localhost:5000/pizza do metody Create() . Místo vrácení seznamu pizz, jak jsme viděli pomocí metody , tato metoda vrátí odpověď, která klientovi umožní vědět, jestli byla žádost úspěšná, a ID nově Get() IActionResult vytvořené pizzy. To se provádí pomocí standardních stavových kódů HTTP, takže se snadno integruje s klienty bez ohledu na jazyk nebo platformu, na které běží.

Výsledek akce
ASP.NET Core
Stavový kód HTTP Popis
CreatedAtAction 201 Pizzu jsme přidali do mezipaměti v paměti.
Pizza je součástí textu odpovědi v typu média, jak je definováno v hlavičce požadavku accept HTTP (ve výchozím nastavení JSON).
Implikuje se BadRequest. 400 Objekt pizza textu požadavku je neplatný.

Naštěstí má nástrojové metody, které pro nás vytvoří odpovídající kódy odpovědí ControllerBase a zprávy HTTP. V dalším cvičení uvidíte, jak tyto postupy fungují.

PUT

Úprava nebo aktualizace pizzy v inventáři se podobá metodě POST, kterou jsme implementovali, ale použije atribut [HttpPut] a kromě objektu Pizza, který je potřeba aktualizovat, použije atribut [HttpPut].

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

Každý výsledek akce (ActionResult) použitý v předchozí akci se namapuje k odpovídajícímu stavovému kódu HTTP v následující tabulce.

Výsledek akce
ASP.NET Core
Stavový kód HTTP Popis
NoContent 204 Pizzu jsme aktualizovali v mezipaměti v paměti.
BadRequest 400 Hodnota Id textu požadavku neodpovídá hodnotě id trasy.
Implikuje se BadRequest. 400 Objekt Pizza textu požadavku je neplatný.

DELETE

Jednou z jednodušších akcí, které je možné implementovat, je akce DELETE, která provede odebrání z mezipaměti v paměti pouze ID pizzy.

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

Každý výsledek akce (ActionResult) použitý v předchozí akci se namapuje k odpovídajícímu stavovému kódu HTTP v následující tabulce.

Výsledek akce
ASP.NET Core
Stavový kód HTTP Popis
NoContent 204 Pizzu odstranili z mezipaměti v paměti.
NotFound 404 Pizza odpovídající zadaném id parametru v paměti neexistuje.

V následujících částech se dozvíte, jak každou z těchto čtyř akcí podporovat ve webovém rozhraní API.

Prověřte své znalosti

1.

Předpokládejme, že potřebujete aktualizovat název produktu. Který z příkazů akcí HTTP tento požadavek splňuje nejlépe?

2.

Ve kterém scénáři je nejvhodnější vrátit stavový kód HTTP 404 a jak toho v ASP.NET Core docílíte?