Retornando fácilmente respuestas en ASP.NET Web API con IHttpActionResult

Una de las mejores características que tiene ASP.NET Web Api para facilitarnos la construcción de respuestas en nuestros métodos es mediante el uso de la interface IHttpActionResult, incluida a partir de la versión 2.

Esta interface lo que define básicamente es una factoría para generar respuestas HTTP. De esta forma, nosotros podemos usar las diferentes implementaciones de la interface IHttpActionResult que provee Web Api en el namespace System.Web.Http.Results.

Veamos a continuación un ejemplo de lo que les menciono en el párrafo anterior: este es un sencillo código donde hacemos una búsqueda de un libro. Si se encuentra el libro se retorna el objeto en una respuesta HTTP OK (Código 200), y si no se encuentra el libro se generará una respuesta HTTP Not Found (Código 404). También tenemos un chequeo para evaluar si se recibió un parámetro nulo, y en este caso retornar una respuesta HTTP Bad Request (Código 400).

public IHttpActionResult ConsultarLibro(Guid id)
{
    if (id.Equals(Guid.Empty))
    {
        return BadRequest("El identificador es requerido"); // HTTP 400
    }
 
    Libro libro = this.repositorio.Libros.Find(id);
 
    if (libro == null)
    {
        return NotFound(); // HTTP 404
    }
 
    return Ok(libro); // HTTP 200
}

Podemos ver entonces lo facil que resulta generar diferentes tipos de respuesta. Por supuesto, al ser IHttpActionResult una interface, nosotros también podemos crear nuestras propias implementaciones y usarlas.

Otras ventajas que también tiene el uso de IHttpActionResult son:

  • Facilitar la implementación de pruebas unitarias en los controladores.
  • Encapsular la lógica de creación de respuestas en clases separadas.
  • Simplificar la lógica de los controladores, al abstraer los detalles de creación de las respuestas, posibilitando también un código más legible.

Eso es todo por el momento. ¡Espero que esta característica les sea muy útil!

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: