Objetivo técnico
Al terminar podrás enviar una petición JSON a una API, leer su status y distinguir un error de transporte de un error del contrato. HTTP es el canal; JSON es una representación de datos que viaja en el body.
Antes de empezar
Necesitas una API local del Bloque 4 o cualquier endpoint de práctica que acepte POST /api/assist. Confirma su URL y puerto. Nunca pruebes con datos sensibles.
Paso a paso
- Envía una petición con
curl:
curl -i -X POST http://localhost:3000/api/assist \
-H 'content-type: application/json' \
-H 'authorization: Bearer clave-local' \
-d '{"message":"Resume la política de devolución"}'
- Lee la primera línea: contiene el status, por ejemplo
HTTP/1.1 200 OK. - Identifica headers y body.
content-type: application/jsondescribe cómo interpretar la respuesta. - Repite sin
message: el contrato debería responder400, no llamar al modelo. - Repite sin autorización: debería responder
401. - Desde TypeScript, recuerda que
fetchno lanza excepción solo porque el servidor devuelve400; inspeccionaresponse.okyresponse.status.
Verificación
Guarda una respuesta exitosa y una inválida. Puedes señalar método, path, headers, body y status en ambas, y explicar por qué el error pertenece al cliente o al servidor.
Errores frecuentes
- Enviar JSON sin
content-type: el servidor puede no parsearlo. - Confundir
401con500: credenciales ausentes no son un fallo interno. - Llamar
response.json()dos veces: el body se consume una vez.
Práctica
Cambia message por un número y predice el status antes de ejecutar. Compara tu predicción con la respuesta real y corrige el schema si acepta un dato inválido.
Puente al RAG
El Bloque 5 conserva POST /api/assist y amplía la respuesta con citas. Comprender HTTP evita mezclar el contrato público con detalles internos del vector store.