Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Mensajes HTTP
  • Ejemplo de mensaje de petición
  • Ejemplo de mensaje de respuesta
  • Verbos
  • Códigos de respuesta
  • Encabezados
  • URL
  • Esquema
  • Host
  • Puerto
  • Path
  • Query String
  • Fragmento
  • Recursos relacionados
  1. HTTP y Sinatra

El protocolo HTTP

PreviousPrimeros pasos con SinatraNextRutas

Last updated 2 years ago

El protocolo HTTP (HyperText Transfer Protocol) es quizá el protocolo más importante que debe conocer un desarrollador Web.

El protocolo HTTP es un documento que define las reglas de los mensajes que se intercambian entre los navegadores (clientes) y los servidores. El documento completo lo puedes encontrar en .

HTTP es un protocolo cliente-servidor, lo que significa que el cliente envía una petición al servidor y espera un mensaje de respuesta.

Cuando abres el navegador e ingresas a cualquier URL los pasos que ocurren son los siguientes:

  1. El navegador abre una conexión con el servidor.

  2. El navegador envía un mensaje HTTP (a esto se le conoce como una petición).

  3. El servidor recibe el mensaje, lo interpreta siguiendo las reglas del protocolo y responde con otro mensaje (la respuesta) que puede ser el documento que se solicitó el usuario, o un error (p.e. que el recurso no existe).

  4. El navegador cierra la conexión.

Mensajes HTTP

Un mensaje HTTP (no importa si es de petición o respuesta) se compone de 3 partes:

  • La primera línea (que es diferente para la petición y la respuesta).

  • Encabezados.

  • Una línea en blanco.

  • El cuerpo (opcional)

Ejemplo de mensaje de petición

GET /index.html HTTP/1.1
Host: wikipedia.org
Accept: text/html

La primera línea se compone de un verbo (en este caso GET), una ruta a un recurso (en este caso /index.html) y la versión del protocolo (en este caso HTTP/1.1)

En este ejemplo tenemos dos encabezados: Host y Accept.

Este mensaje no tiene cuerpo.

Ejemplo de mensaje de respuesta

HTTP/1.1 200 OK
Server: wikipedia.org
Content-Type: text/html
Content-Lenght: 2026

<html>
  …
</html>

Verbos

La primera línea de un mensaje HTTP de petición empieza con un verbo (también se le conoce como método). Los verbos definen la acción que se quiere realizar sobre el recurso. Los verbos más comunes son:

  • GET: se utiliza para solicitar un recurso.

  • POST: se utiliza para publicar un recurso.

  • PUT: se utiliza para reemplazar un recurso.

  • DELETE: se utiliza para eliminar un recurso.

Existen otros pero estos son los más comunes.

Códigos de respuesta

La primera línea de un mensaje de respuesta tiene un código de 3 dígitos que le indica al cliente cómo interpretar la respuesta.

Los códigos de respuesta se dividen en cinco categorías dependiendo del dígito con el que inician:

  • 1XX: Información

  • 2XX: Éxito

  • 3XX: Redirección

  • 4XX: Error en el cliente

  • 5XX: Error en el servidor

Encabezados

Los encabezados brindan información adicional sobre la petición o la respuesta. Los encabezados tienen la siguiente sintaxis:

[nombre del encabezado]: [valor del encabezado]

URL

Un URL (Uniform Resource Locator) se utiliza para ubicar un recurso en Internet. Los URLs no solo se pueden utilizar para el protocolo HTTP, se utilizan en muchos otros protocolos.

La siguiente imagen muestra las partes de un URL utilizando dos ejemplos:

Esquema

El esquema define el protocolo a utilizar, para HTTP puede ser http o https (el protocolo seguro de HTTP).

Host

La IP o el nombre del servidor que se quiere acceder (p.e. 127.0.0.1, localhost, google.com, www.google.com.co, etc.)

Puerto

E puerto en el que está escuchando el servidor HTTP. Si se omite se asume que es el 80.

Path

Define la ruta del recurso que se quiere acceder.

Query String

Contiene información adicional para el servidor en forma de propiedades (atributo=valor). Las propiedades se separan por &.

Fragmento

La referencia a una ubicación interna del documento.

Recursos relacionados

URL

Ver el video de esta lección: .

http://www.rfc-base.org/txt/rfc-2068.txt
https://youtu.be/K589vqhuMm8