Akce CRUD v ASP.NET Core

Dokončeno

Naše služba pizza podporuje operace CRUD pro seznam pizz. Tyto operace se provádějí prostřednictvím příkazů HTTP, které se mapují prostřednictvím atributů ASP.NET Core. Jak jste viděli, příkaz HTTP GET se používá 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é implementujete pro službu pizzy:

Příkaz akce HTTP Operace CRUD Atribut ASP.NET Core
GET Čteno [HttpGet]
POST Vytvoření [HttpPost]
PUT Aktualizovat [HttpPut]
DELETE Odstranění [HttpDelete]

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

POST

Pokud chcete uživatelům povolit přidání nové položky do koncového bodu, musíte akci implementovat POST pomocí atributu [HttpPost] . Když předáte položku (v tomto příkladu pizzu) do metody jako parametr, ASP.NET Core automaticky převede všechny aplikace/JSON odeslané do koncového bodu na naplněný objekt .NET Pizza .

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

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

Atribut [HttpPost] mapuje požadavky HTTP POST odeslané http://localhost:5000/pizza pomocí Create() metody. Místo vrácení seznamu pizz, jak jsme viděli s Get() metodou, vrátí tato metoda IActionResult odpověď.

IActionResult informuje klienta, jestli žádost proběhla úspěšně, a poskytne ID nově vytvořené pizzy. IActionResult používá standardní stavové kódy HTTP, takže se může snadno integrovat s klienty bez ohledu na jazyk nebo platformu, na které běží.

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

Naštěstí má utility metody, ControllerBase které vytvářejí odpovídající kódy odpovědí HTTP a zprávy za vás. V dalším cvičení se dozvíte, jak tyto metody fungují.

PUT

Úprava nebo aktualizace pizzy v našem inventáři je podobná metodě POST, kterou jste implementovali, ale používá [HttpPut] atribut a přebírá id parametr kromě objektu Pizza , který je potřeba aktualizovat:

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

Každá ActionResult instance použitá v předchozí akci se mapuje na odpovídající stavový kód HTTP v následující tabulce:

ASP.NET Core
ASP.NET Core
Stavový kód HTTP Popis
NoContent 204 Pizza byla aktualizována 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í k implementaci je DELETE akce, která provede pouze id parametr pizzy, která se odebere z mezipaměti v paměti:

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

Každá ActionResult instance použitá v předchozí akci se mapuje na odpovídající stavový kód HTTP v následující tabulce:

ASP.NET Core
ASP.NET Core
Stavový kód HTTP Popis
NoContent 204 Pizza byla odstraněna z mezipaměti v paměti.
NotFound 404 V mezipaměti v paměti neexistuje pizza, která odpovídá zadanému id parametru.

Cvičení v další lekci ukazuje, jak podporovat každou ze čtyř akcí ve webovém rozhraní API.

Kontrola znalostí

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?