Mis apuntes de desarrollo web </>

HTTP

HTTP (Hypertext Transfer Protocol) es el protocolo utilizado por la World Wide Web para la transferencia de información entre un cliente (como un navegador web) y un servidor. HTTP define cómo deben formatearse y transmitirse los mensajes, y cómo los servidores y navegadores deben responder a varios comandos.

Cliente:
Generalmente un navegador web que solicita recursos, como páginas web, imágenes, etc.
Servidor:
Un sistema que alberga los recursos y los envía al cliente cuando se solicitan.

Creando un servidor HTTP

El método principal para crear un servidor es http.createServer(). Este método devuelve un servidor que puede escuchar solicitudes entrantes.

ejemplo servidor básico
ejemplo ejecución servidor básico

ejemplo ejecución servidor básico en el navegador

Solicitudes HTTP

Las solicitudes HTTP son mensajes enviados por el cliente al servidor para solicitar algún recurso o realizar una acción. Una solicitud HTTP tiene varios componentes importantes:

Método HTTP

Define la acción a realizar. Los métodos más comunes son:

GET:
Solicita datos de un recurso específico.
POST:
Envía información a un recurso específico.
PUT:
Envía información al servidor para actualizar un recurso específico.
DELETE:
Elimina un recurso específico.
PATCH:
Modifica parcialmente un recurso específico.

Header

Contiene datos que proporciona información adicional sobre la solicitud o sobre el cliente.

Host:
Indica el nombre del servidor.
User-agent:
Información sobre el cliente que hace la solicitud.
Accept:
Tipo de contenido que el cliente puede procesar.

Body

Utilizado principalmente en solicitudes POST y PUT para enviar datos adicionales al servidor (como formularios, JSON, etc.).

Respuestas HTTP

Las respuestas HTTP son mensajes enviados por el servidor al cliente en respuesta a una solicitud HTTP. Una respuesta HTTP tiene varios componentes importantes:

Código de Estado

Un número que indica el resultado de la solicitud.

Clase Código Significado
Informativos 100 El servidor ha recibido los encabezados de la solicitud y el cliente puede proceder a enviar el cuerpo de la solicitud.
101 Cambio de protocolos.
102 Procesando.
103 Punto de control.
Exitosos 200 La solicitud ha tenido éxito.
201 La solicitud ha tenido éxito y se ha creado un nuevo recurso.
202 El recurso se ha aceptado.
203 Información no autorizada.
204 No hay contenido para mostrar.
205 Contenido reestablecido.
206 Contenido parcial.
207 Estado múltiple.
208 Ya reportado.
Redirección 300 Opciones múltiples.
301 El recurso solicitado se ha movido permanentemente a una nueva URL.
302 El recurso solicitado se ha encontrado temporalmente en una URL diferente.
303 Ver otros.
304 Sin modificaciones
305 Uso de proxy.
306 Cambio de proxy.
307 Redirección temporal.
308 Redirección permanente.
Errores del cliente 400 La solicitud no se puede procesar debido a un error del cliente.
401 La autenticación es necesaria y ha fallado o no se ha proporcionado.
402 Pago requerido.
403 El cliente no tiene permisos para acceder al recurso.
404 El recurso solicitado no se ha encontrado.
405 Método no autorizado.
406 Solicitud no aceptada.
407 Autenticación proxy requerida.
408 Exceso de demora en la petición.
409 Conflicto.
410 El recurso se ha ido.
411 Longitud requerida.
412 Condición previa fallida.
413 Entidad solicitante muy extensa.
414 petición URI muy larga.
415 Multimedia no soportada.
416 Rango no satisfactorio.
417 La expectativa fracasó.
423 Bloqueado.
424 Dependencia fallida.
425 Colección desordenada.
426 Se requiere actualización.
428 Condición previa requerida.
429 Exceso de peticiones.
431 Datos del header muy extensos.
450 Bloqueo parental.
451 No disponible por legales.
Errores de servidor 500 Ha ocurrido un error interno en el servidor.
501 No implementado.
502 Error en puerta de acceso.
503 El servidor no está disponible temporalmente.
504 Exceso de demora en la puerta de acceso.
505 Versión HTTP no soportada.
507 Espacio insuficiente.
508 Bucle detectado.
509 Exceso de ancho de banda.
510 No extendido.
511 Autenticación requerida.

Header

Proporcionan información adicional sobre la respuesta.

Content-Type:
Tipo de contenido de la respuesta (por ejemplo, text/html, application/json).
Content-Length:
Longitud del contenido de la respuesta.
Accept:
Tipo de contenido que el cliente puede procesar.

Body

El contenido real solicitado por el cliente (por ejemplo, el HTML de una página web, una imagen, datos JSON, etc.).

Métodos del módulo HTTP

El módulo HTTP proporciona varios métodos para interactuar con el servidor y las solicitudes y respuestas HTTP. Algunos de los métodos más comunes son:

http.createServer():
Crea un servidor HTTP.
http.request()
Envía una solicitud HTTP a un servidor.
server.listen():
Escucha las solicitudes entrantes en un puerto específico.
request.url:
Devuelve la URL de la solicitud.
request.method:
Devuelve el método de la solicitud.
response.writeHead():
Envía una línea de estado y encabezados de respuesta al cliente.
response.write():
Envía datos al cliente.
response.end():
Finaliza la respuesta.

Ejemplos:

Ejemplo servidor y peticion