ASP.NET Web API – Aplicando Validaciones

En esta tercera entrega acerca de ASP.NET Web API veremos como podemos aplicar validaciones dentro de nuestros servicios. Al igual que con ASP.NET MVC, Web API utiliza el Defaul Model Binder para realizar las validaciones, lo cual es una excelente noticia para quienes trabajamos con el framework.

Arranquemos!… el primer paso será agregar los atributos de validación a la clase Cliente, utilizando la librería DataAnnotations para tal fin:

Aplicando los atributos de validación al modelo

Aplicando los atributos de validación al modelo

Hecho esto, tenemos que ambas propiedades del modelo serán “requeridas” (obligatorias) y que el nombre de usuario tendrá como máximo 4 caracteres de longitud. Aclaración: agregué un nuevo atributo – User – a modo de hacer un poco mas completo el ejemplo.

Ahora viene lo interesante, vayamos al método de acción Post() y agreguemos la lógica necesaria para validar que los datos del cliente que llegan del servicio sean correctos:

Método de acción Post() redefinido

Método de acción Post() redefinido

Como verán, hicimos algunos cambios respecto a como a la definición del método de acción Post() de la entrada anterior. Ahora, previo a la creación del cliente, tenemos que validar que el modelo sea correcto – ModelState.IsValid – y en el caso de serlo, agregar de alguna manera los errores a la respuesta HTTP para notificarle al cliente. La forma de hacerlo es consultando las propiedades del ModelState que posean errores para recuperar los “mensajes de error” de las mismas. Luego creamos un objeto del tipo JsonArray – recuerden incluir el namespace System.Json – al cual agregar esta información. Una vez hecho todo esto, armamos la respuesta HTTP que vamos a devolver, incluyendo el código de estado HTTP 400 – Bad Request (el cual vamos a usar para identificar cuando la validación fue incorrecta) y los mensajes de error serealizados.

Momento de ir a la vista y agregar: un nuevo campo de texto para permitir la carga del nombre de usuario y un div donde vamos a visualizar los errores que pueden producirse en la creación del cliente:

Modificando la vista

Modificando la vista

Llego el momento de trabajar en el script, de forma tal que procese el resultado de las validaciones en caso de que las mismas no hayan sido correctas. Lo primero será modificar la función crearCliente():

Modificando la función crearCliente() del script Clientes.js

Modificando la función crearCliente() del script Clientes.js

Como pueden observar, uno de los cambios que hicimos en la función fue agregar una nueva función de callback en los parámetros. Esta nueva función llamada callbackFail se invocará solamente cuando ocurran errores en la validación del modelo, es decir, cuando el valor del código de estado – statusCode – devuelto por el servicio sea HTTP 400 – Bad Request. Para trabajar con los errores, debemos consultar a la propiedad responseText que recibimos en el objeto xhr – del tipo XmlHttpRequest – devuelto por el servicio (es importante serializarla antes de enviarla a la función de callback).

Pueden inspeccionar el resultado del servicio, cuando el modelo no es correcto, y observar la propiedad responseText con el arreglo de los errores:

Resultado del servicio cuando el modelo no es correcto

Resultado del servicio cuando el modelo no es correcto

Ok, llego el momento de modificar el evento click del botón “Crear”:

Modificando el evento click del botón "Crear"

Modificando el evento click del botón “Crear”

Bien, en este punto simplemente lo que hacemos es recibir el array con los mensajes de error y “dibujarlos” en el div que creamos en la vista para tal fin. Queda en ustedes ver la mejor forma de visualizar los errores :).

Probemos lo hecho:

Consumiendo los servicios desde nuestra app

Consumiendo los servicios desde nuestra app

Resumiendo, podemos ver que el manejo de las validaciones no difiere demasiado de la forma en que lo veníamos haciendo en los proyectos ASP.NET MVC. Simplemente tenemos que modificar el formato en que vamos ha devolver las mismas adaptándonos a los estándares REST.

En próximos post vamos a seguir viendo otras características de Web API.

Anuncios

8 comentarios en “ASP.NET Web API – Aplicando Validaciones

  1. Estimado.
    Al intentar desarrollar el tutorial, me encontre con un problema que vengo arrastrando de los anteriores tutoriales WEB API.
    En la imagen se muestra que esto esta permitido:

    return new HttpResponseMessage(errores, HttpStatusCode.BadRequest);

    sin embargo cuando lo codifico me envia error dado que HttpResponseMessage no se puede aplicar un tipo.
    Me puedes ayudar en esto por favor Sebis.

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