Acciones CRUD de ASP.NET Core
Nuestro servicio de pizza admite operaciones CRUD para obtener una lista de pizzas. Estas operaciones se realizan a través de verbos HTTP, que se asignan a través de atributos de ASP.NET Core. Como ha visto, el verbo HTTP GET
se usa para recuperar uno o varios elementos de un servicio. Esta acción se anota con el atributo [HttpGet]
.
En la tabla siguiente se muestra la asignación de las cuatro operaciones que se están implementando para el servicio de pizzas:
Verbo de acción HTTP | Operación CRUD | Atributo de ASP.NET Core |
---|---|---|
GET |
Lectura | [HttpGet] |
POST |
Crear | [HttpPost] |
PUT |
Update | [HttpPut] |
DELETE |
Eliminar | [HttpDelete] |
Ya ha visto cómo funcionan las acciones GET
. Vamos a obtener más información sobre las acciones POST
, PUT
y DELETE
.
POST
Para permitir que los usuarios agreguen un nuevo elemento al punto de conexión, debe implementar la acción POST
mediante el atributo [HttpPost]
. Al pasar el elemento (en este ejemplo, una pizza) al método como un parámetro, ASP.NET Core convierte automáticamente cualquier aplicación o JSON enviado al punto de conexión en un objeto Pizza
de .NET rellenado.
Esta es la firma del método Create
que va a implementar en la sección siguiente:
[HttpPost]
public IActionResult Create(Pizza pizza)
{
// This code will save the pizza and return a result
}
El atributo [HttpPost]
asigna a las solicitudes HTTP POST
enviadas a http://localhost:5000/pizza
mediante el método Create()
. En lugar de devolver una lista de pizzas, como vimos con el método Get()
, este método devuelve una respuesta IActionResult
.
IActionResult
permite al cliente saber si la solicitud se ha solicitado correctamente y proporciona el identificador de la pizza recién creada. IActionResult
usa códigos de estado HTTP estándar, por lo que se integra fácilmente con los clientes, independientemente del lenguaje o la plataforma en la que se ejecuten.
Resultado de la acción de ASP.NET Core |
Código de estado HTTP | Descripción |
---|---|---|
CreatedAtAction |
201 | La pizza se ha agregado a la caché en memoria. La pizza se incluye en el cuerpo de la respuesta del tipo de medio según la definición del encabezado de solicitud HTTP accept (JSON de manera predeterminada). |
BadRequest está implícito. |
400 | El objeto pizza del cuerpo de la solicitud no es válido. |
Afortunadamente, ControllerBase
tiene métodos de utilidad que crean los mensajes y códigos de respuesta HTTP adecuados automáticamente. Va a ver cómo funcionan estos métodos en el ejercicio siguiente.
PUT
La modificación o actualización de una pizza del inventario es similar al método POST que implementó, aunque usa el atributo [HttpPut]
y toma el parámetro id
además del objeto Pizza
que se debe actualizar:
[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
// This code will update the pizza and return a result
}
Cada instancia ActionResult
usada en la acción anterior se asigna al código de estado HTTP correspondiente en la tabla siguiente.
Resultado de la acción de ASP.NET Core |
Código de estado HTTP | Descripción |
---|---|---|
NoContent |
204 | La pizza se ha actualizado en la caché en memoria. |
BadRequest |
400 | El valor Id del cuerpo de la solicitud no coincide con el valor id de la ruta. |
BadRequest está implícito. |
400 | El objeto Pizza del cuerpo de la solicitud no es válido. |
DELETE
Una de las acciones más fáciles de implementar es la acción DELETE
, que toma solo el parámetro id
de la pizza que se va a quitar de la caché en memoria:
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
// This code will delete the pizza and return a result
}
Cada instancia ActionResult
usada en la acción anterior se asigna al código de estado HTTP correspondiente en la tabla siguiente.
Resultado de la acción de ASP.NET Core |
Código de estado HTTP | Descripción |
---|---|---|
NoContent |
204 | La pizza se ha eliminado de la caché en memoria. |
NotFound |
404 | No hay ninguna pizza que coincida con el parámetro id proporcionado en la caché en memoria. |
En el ejercicio de la siguiente unidad se muestra cómo admitir cada una de estas cuatro acciones en la API web.