SCWCD : POST, GET e Idempotencia


(Imagen: Rembrandt - La lección de anatomía)

Aquí un post pequeño, dado que me acabo de acordar de algo que siempre viene en el examen SCWCD (esta sí es la fija); y que de hecho te has preguntado cuando hacías tus pininos en programacíon web.

Cuando defines tu formaulario HTML a ser enviado al servlet miservlet, lo haces con una tag similar a esta:

<form method="post" action="/miservlet" >


El atributo method de la tag corresponde al comando HTTP para acceder a recursos en la web, en este caso, nuestro servlet. Los comandos HTTP , más populares son POST y GET, y cada uno se corresponde con un método de la clase HttpServlet, ya sea doPost() o doGet(). Entonces... ¿cuando usamos GET y cuando usamos POST?.

GET se utiliza para acceder a recursos de modo que los resultados de acceder a este recurso puedan ser almacenados en caché y se pueda repertir múltiples veces sin afectar al recurso en sí (por eso, se dice que GET es idempotente: anótalo en tu cuaderno). Por ejemplo, si quieres obtener una imagen, o una página HTML estática el que el browser la almacenes en caché no tiene significancia, y podemos solicitarlos las veces que queramos y siempre veremos la misma imagen o la misma página HTML.

Por el contrario, POST fue diseñado para alterar o modificar el recurso accedido, por lo que POST se utiliza con frecuencia para envío de formularios. Una acción POST no debería ser repetida sin la explícita aprobación del usuario. Por ejemplo, si se trata de un formulario para agregar ítems al carrito de compra, si envías el formulario 10 veces agregarás a tu carrito 10 veces el ítem, y ya estariamos modificando nuestro recurso . Por lo tanto, POST no es idempotente.

Como dato, la especificación HTTP define 8 comandos (o verbos) para acceder a recursos en la Web. Y para dar tu exámen, deberías saberlos al dedillo. Ahí tienen una tarea para entretenerse.

Publicar un comentario