HTTP #9 – La respuesta

Protocolo HTTP

Una respuesta HTTP (HTTP response) tiene una estructura similar a una HTTP request.

Las secciones de una HTTP response son:

[versión] [status] [reason]
[headers]
[body]

La respuesta, por ejemplo, a la web http://getbootstrap.com/ tiene el siguiente aspecto:

HTTP/1.1 200 OK
Server: GitHub.com
Date: Mon, 28 Jul 2014 15:14:55 GMT
Content-Type: text/html; charset=utf-8
Last-Modified: Tue, 01 Jul 2014 04:11:43 GMT
Transfer-Encoding: chunked
Expires: Mon, 28 Jul 2014 15:24:55 GMT
Cache-Control: max-age=600
Vary: Accept-Encoding
Content-Encoding: gzip

y el contenido del body no es otro que el código HTML que ejecuta el navegador.

La primera línea de una respuesta comienza con la versión HTTP (HTTP/1.1) y después el código de status (200) y el reason (OK).

El status code es un número que define el estado de la conexión y tiene 5 categorías:

  • 100-199 –> Información
  • 200-299 –> Éxito
  • 300-399 –> Redirección
  • 400-499 –> Error en el cliente
  • 500-599 –> Error en el servidor

Los siguientes códigos de status son los más comunes, aunque si quieres ver todos, los puedes ver aquí:

  • 200 — OK — Es el status que todos queremos ver. Un 200 en la respuesta indica que todo ha funcionado.
  • 301 — Moved Permanently — El recurso ha cambiado a la URL especificada en la cabecera Location y el cliente nunca volverá a comprobar esta URL.
  • 302 — Moved Temporarily — El recurso ha cambiado a la URL especificada en la cabecera Location. En el futuro, el cliente podrá realizar la petición a la URL original porque se ha cambiado temporalmente. Este status es típicamente usada después de un POST de un formulario para llevar al cliente a un recurso que se pueda pedir con GET (ver capítulo 7)
  • 304 — Not Modified — El servidor indica al cliente que el recurso no ha cambiado desde la última vez y que puede utilizar su versión cacheada localmente.
  • 400 — Bad Request — El servidor no ha entendido la request. Es probable que la sintaxis de la request no sea la correcta.
  • 403 — Forbidden — El servidor no acepta el acceso al recurso.
  • 404 — Not Found — El popular código que indica que el recurso no se pudo encontrar.
  • 500 — Internal Server Error — El servidor tiene un error procesando la request. Normalmente ocurre por errores de programación en la aplicación.
  • 503 — Service Unavailable — El servidor no puede responder a la request. Puede aparecer cuando al servidor está sobrecargado de peticiones.

 

Una última cosa. Recuerda que el status code es un indicador de lo que ha ocurrido pero a nivel de HTTP. No necesariamente refleja qué ocurrió en tu aplicación.

Por ejemplo, imagina que un usuario quiere hacer login y envia el correspondiente formulario, pero no rellena el campo de la contraseña. El usuario por lo tanto, no podrá hacer login. Esto no significa que tengamos que devolver un código de error indicándolo. Muy probablemente querrás justo lo contrario, querrás que se produzca un 200-OK a una página en la que se indique al usuario que no ha introducido su contraseña y que por eso no pudo hacer login.

Desde una perspectiva de aplicación, el caso de uso ha fallado ya que el usuario no ha podido hacer login, pero desde la perspectiva de HTTP, la request fue procesada correctamente.

 

HTTP #9 – La respuesta

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s