¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo leer una petición HTTP

Después de esta lección: Puedo leer una petición HTTP y su respuesta.

Lección de 55 min6 comandosLaboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

Abrir una app envía una petición

Una petición HTTP, la del protocolo de transferencia de hipertexto, es el mensaje con el que una app pide algo a un servidor. Si sabes leerla, entiendes qué pide cada app y por qué a veces falla.

Piensa en la app de la biblioteca de tu universidad. Al abrirla, pide al servidor la lista de libros. El servidor contesta con otro mensaje: la respuesta.

Al terminar esta lección

Nota

Puedo leer una petición HTTP y su respuesta.

Palabras clave

PalabraQué significaEjemplo
Peticiónel mensaje que pide algo a un servidor
Respuestael mensaje con el que el servidor contesta
Métodola palabra que dice qué quieres hacerGET
Cabecerauna línea con un dato extra sobre el mensajeHost: api:3000
Código de estadoel número que dice cómo fue la petición404
Cuerpolos datos que viajan al final del mensaje

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una petición tiene cuatro partes

La primera línea lleva el método, la ruta y la versión del protocolo. La ruta es la parte de la dirección que dice qué recurso se pide.

Después vienen las cabeceras, una por línea. Cada una tiene un nombre, dos puntos y un valor.

Una línea vacía cierra las cabeceras. Lo que sigue es el cuerpo, y muchas peticiones no lo llevan.

Una petición escrita línea a línea

Código: bash
GET /books?id=eq.1 HTTP/1.1
Host: api:3000
Accept: application/json

Ejemplo resuelto: la primera línea, por partes

ParteEn el ejemploQué dice
MétodoGETQuiero leer
Ruta/books?id=eq.1Pido el libro con id 1
VersiónHTTP/1.1Hablo esta versión del protocolo
Cabecera Hostapi:3000El servidor al que va el mensaje

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que una petición es solo la dirección que se escribe en el navegador. La dirección es solo una parte. También cuentan el método, las cabeceras y a veces el cuerpo. Dos peticiones a la misma dirección con distinto método hacen cosas distintas.

La respuesta trae estado y cuerpo

La primera línea de la respuesta lleva el código de estado. 200 quiere decir que todo fue bien. 404 quiere decir que no existe lo que pides.

Siguen las cabeceras, que hablan del cuerpo, por ejemplo de su tipo. El cuerpo es lo que pediste. Aquí es JSON, un texto que escribe los datos con llaves y corchetes y que lee cualquier lenguaje.

curl envía peticiones desde el terminal

curl es un programa que envía una petición y muestra lo que llega. En el laboratorio, la API de la biblioteca está en http://api:3000.

Los nombres de tablas y columnas van en inglés, como en casi todos los proyectos. Los datos están en español.

Primero prepara la tabla books con cuatro libros. Es seguro repetirlo: empieza de cero cada vez.

Dar a psql la contraseña

Comando
export PGPASSWORD=shop

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crear la tabla de libros

Comando
psql -h db -U shop -q -c "drop table if exists books; create table books (id serial primary key, title text not null, copies int not null default 1, status text not null default 'disponible'); insert into books (title, copies, status) values ('Redes de computadores', 3, 'disponible'), ('Algoritmos y estructuras', 0, 'prestado'), ('Sistemas operativos', 2, 'disponible'), ('Ingenieria del software', 1, 'disponible'); notify pgrst, 'reload schema'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir el libro con id 1

Comando
curl -s -w "\n" "http://api:3000/books?id=eq.1"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver las líneas que envía curl

Comando
curl -s -v -o /dev/null "http://api:3000/books?id=eq.1" 2>&1 | grep -E "^> (GET|Host)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver la línea de estado

Comando
curl -s -v -o /dev/null "http://api:3000/books?id=eq.1" 2>&1 | grep -E "^< HTTP"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir una ruta que no existe

Comando
curl -s -o /dev/null -w "%{http_code}\n" "http://api:3000/magazines"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.