page-not-found-688965_640

En lo que se refiere a los servicios web, estamos muy habituados a los servicios SOAP, y con ellos todos los vicios que arrastramos, y el tratamiento de los códigos HTTP es uno de ellos.

Según el estándar SOAP, cuando se devuelve un error, hay que devolver un código 500. Por el contrario, cuando todo va bien, se devuelve un 200. Quizás la única excepción a esto es, para los muy sibaritas en servicios web, que cuando se tiene un servicio one-way en el que sólo hay un request, no se espera por la respuesta (asíncrono), entonces habría que devolver un código HTTP 202.

En general, podemos decir, que siempre que no obtenemos un 200 es que algo ha ido mal, así de sencillo. Esto lo tomamos como un dogma en la monitorización de servicios web y hasta aquí todo bien… pero ¿qué pasa con los servicios REST?.

Los servicios REST deben de utilizar todos los códigos HTTP que sean apropiados. Por supuesto, el 500 y el 200, pero también el resto. Por poner un ejemplo: ¿Que debe devolverse cuando buscamos un recurso que no existe? el clásico y conocido 404. Por favor, si eres desarrollador o diseñador de servicios REST ten esto siempre a mano.

Pero, que pasa con el concepto “antiguo” por el cual todo lo que no es un 200 es un error. Podríamos pensar que 404 es un error, pero no es así… si tenemos un servicio que nos devuelve información sobre un cliente por poner un ejemplo, el 404 es un código muy correcto cuando estamos preguntando por un cliente que no existe… no es un error (visto como un mal funcionamiento del sistema) siempre estamos devolviendo un mensaje común en las búsquedas: “oye, que lo que estás buscando no lo encuentro”… así de fácil.

¿Qué hacemos con las herramientas de monitorización entonces? esas que constantemente están comprobando  la salud de nuestros servicios ¿nos podemos aferrar al esquema clásico, casi “binario” del todo o nada, del 200 o el 500? Evidentemente no.

En definitiva, todavía queda mucha labor pedagógica (como se dice ahora), en cuanto a los servicios REST. Por la noche todos los gatos pueden ser pardos 😉 pero no todo lo que circule sobre HTTP debe regirse por los viejos usos y costumbres de WS-*.

 

Anuncios