Skip to content

CORE-UPM/P1_calculadora_HTTP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation




Práctica 1 - Calculadora HTTP

Versión: 29 de Enero de 2025

Objetivos

  • Comprender el funcionamiento de las peticiones y las respuestas en HTTP
  • Elaborar peticiones HTTP de manera manual
  • Utilizar herramientas conocidas (p.e., netcat) para depurar peticiones HTTP.

Descripción de la práctica

En la URL http://malamen.dit.upm.es/calc hay desplegada una calculadora HTTP que sirve para sumar, restar, dividir y multiplicar dos números, obteniendo el resultado en formato JSON.

Para usar esta calculadora debe enviarse una petición HTTP de tipo POST a la URL anterior, y pasar en el cuerpo (body) los dos números y el operador que se quieran aplicar.

Hay muchas formas de realizar esa consulta: desde utilizar código Javascript en cliente, hasta el uso de herramientas específicas como cURL. Sin embargo, todas ellas usan el protocolo HTTP por debajo.

En esta práctica, elaboraremos varias peticiones HTTP de manera manual que enviaremos al servidor, y comprobaremos que la respuesta obtenida es la esperada.

Descargar el código del proyecto

Instrucciones aquí.

Tareas

Todas las tareas en esta práctica consistirán en escribir en texto plano una petición de tipo POST al servidor de calculadora.

El cuerpo de la petición debe user el mismo formato que un formulario. El tipo de contenido debe ser Content-type: application/x-www-form-urlencoded, los operandos deben asignarse a las variables n1 y n2, el operador a la variable op, todo separado con "&", y usando escapado URL.

Así, para suma 3 y 4, hay que pasar en el body la siguiente cadena: n1=3&n2=4&op=%2B.

Algunos operadores han de ser escapados (transformados para su uso en URL). Para escapar el operador suma debe usarse la codificación %2B, y para la multiplicación %2A.

La petición HTTP debe incluir también otras cabeceras, como por ejemplo:

  • Host: direccion del servidor
  • Accept: text/html,text/text,application/json
  • Connection: keep-alive para no cerrar la conexión
  • Content-Length: tamaño del body

La respuesta HTTP que devuelve el servidor es un objeto JSON que puede contener el resultado pedido, o un error si hay algún problema.

Se pide escribir varios ficheros con peticiones al servidor, siguiendo las especificaciones de los apartados siguientes.

1. Petición inválida

La primera tarea será escribir en el fichero error400.txt una petición que cause que el servidor devuelva una respuesta con un código HTTP 400. En otras palabras, debe ser una petición errónea.

2. Suma de dos valores

Escribir en el fichero suma.txt una petición a la calculadora de la suma de dos valores: 3 y 4.

3. Petición incompleta

Por último, escriba una petición en el fichero incompleta.txt que cause que el servidor "quede a la espera de más datos", causando un timeout después de un tiempo. Es decir, la petición debe ser correcta, pero incompleta.

Pista: ¿cómo sabe el servidor cuándo ha terminado una petición?.

Comprobar las peticiones

Antes de probar el autocorector, será necesario comprobar manualmente cada una de las peticiones. La forma de hacerlo dependerá del sistema operativo usado.

En *nix (GNU/Linux, Mac, BSD)

(También válido en la bash shell de Windows o en WSL (Windows Subsystem for Linux))

Lanzar el siguiente comando:

nc malamen.dit.upm.es 80 < peticion.txt

Este comando escribirá en pantalla la respuesta HTTP recibida, y en su body debe llegar un objeto JSON indicando el resultado.

En Windows

  • Opción 1, telnet (recomendada): es necesario activar telnet en windows.

    Lanzar el siguiente comando en el PowerShell:

    telnet malamen.dit.upm.es 80
    # pegar el contenido del fichero con la petición (no muestra el contenido que se pega en el PowerShell pero sí que lo está enviando)
    # si desea cerrar la conexión poner la palabra 'quit' 
  • Opción 2, netcat (avanzada): durante la instalación de Node marcar la casilla Automatically install the necesarry tools. Note that his will also install Chocolatey...

    Abrir un PowerShell con permisos de administrador e instalar netcat con el siguiente comando:

    choco install netcat

    Lanzar el siguiente comando en el PowerShell:

    Get-Content peticion.txt | nc malamen.dit.upm.es 80

Pruebas con el autocorector

Instrucciones aquí.

Pruebas manuales y capturas de pantalla

Instrucciones aquí.

Capturas a entregar con esta práctica:

  • Captura 1: Captura de la respuesta a la petición errónea.
drawing
  • Captura 2: Captura de la respuesta a la petición correcta con la suma de dos valores.
drawing

Instrucciones para la Entrega y Evaluación.

Instrucciones aquí.

Rúbrica

Se puntuará el ejercicio a corregir sumando el % indicado a la nota total si la parte indicada es correcta:

  • 40%: Petición errónea
  • 40%: Petición de una suma
  • 20%: Petición incompleta

Si pasa todos los tests se dará la máxima puntuación.

About

Práctica 1 CORE 2024

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published