Creando una API con operaciones CRUD – Parte 2

En el post que contiene la primera parte de este ejercicio, configuramos un sencillo modelo de datos para el ejemplo con Entity Framework Code First, y creamos un método para hacer consultas al repositorio de datos. En esta segunda parte, estaremos revisando cómo agregar el resto de operaciones CRUD a nuestro ejemplo.

Para poder probar los métodos que adicionaremos a continuación, usaremos la herramienta Fiddler, la cual nos permite elaborar peticiones al servidor para los distintos verbos HTTP y enviando toda la información que necesitemos.

Empezaremos agregando un método para crear un nuevo registro a través de una petición POST:

[HttpPost]
public IHttpActionResult AddCar([FromBody]Car car)
{
    if (ModelState.IsValid)
    {
        dbContext.Cars.Add(car);
        dbContext.SaveChanges();
 
        return Ok(car);
    }
    else
    {
        return BadRequest();
    }
}

Probando en Fiddler, enviamos la siguiente petición, la cual se compone del verbo (POST), una URL, unos encabezados que tienen el tipo de contenido (application/json) y un cuerpo que tienen los datos a enviar al API en formato JSON.

webapi_primercrud_p2_01

El mismo Fiddler nos permite verificar la respuesta, que en nuestro ejemplo es el código 200, es decir código HTTP OK.

webapi_primercrud_p2_02

También podemos hacer la comprobación de la existencia del registro en la base de datos:

webapi_primercrud_p2_03

Luego, continuamos agregando los siguientes dos métodos para la modificación (PUT) y la eliminación (DELETE)

[HttpPut]
public IHttpActionResult UpdateCar(int id, [FromBody]Car car)
{
    if (ModelState.IsValid)
    {
        var carExists = dbContext.Cars.Count(c => c.Id == id) > 0;
 
        if (carExists)
        {                    
            dbContext.Entry(car).State = EntityState.Modified;
            dbContext.SaveChanges();
 
            return Ok();
        }
        else
        {
            return NotFound();
        }
    }
    else
    {
        return BadRequest();
    }
}
 
[HttpDelete]
public IHttpActionResult DeleteCar(int id)
{
    var car = dbContext.Cars.Find(id);
 
    if (car != null)
    {
        dbContext.Cars.Remove(car);
        dbContext.SaveChanges();
 
        return Ok(car);
    }
    else
    {
        return NotFound();
    }
}

Estos dos métodos los podemos probar también a través de Fiddler, de igual forma que probamos anteriormente:

webapi_primercrud_p2_04

webapi_primercrud_p2_05

Otro tema que hay que apreciar en el código, es el uso de los métodos que nos generan una respuesta, como lo son OK, NotFound, BadRequest, etc. La idea de una API REST es transmitir siempre el resultado en base al protocolo HTTP, y estos métodos de extensión son una facilidad que nos tenemos los desarrolladores desde ASP.NET Web Api 2 para generar respuestas con los códigos de estado HTTP correctos. Si quieres conocer más sobre el tema de los códigos de estado HTTP, te invito a leer este artículo de Wikipedia.

Y bien, es todo en este post. Hemos creado una API básica con operaciones CRUD sobre una base de datos. Si tienes alguna inquietud o comentario, ¡no dudes en compartirlo!

El código de ejemplo de este post lo pueden encontrar en mi cuenta de GitHub

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: