Middle
¿Qué sucede después de que recibimos el DNS y enviamos la solicitud a nuestro servicio?
sobes.tech AI
Respuesta de la IA
- El navegador establece una conexión TCP con el servidor en el puerto 80 (para HTTP) o 443 (para HTTPS).
- El navegador envía una solicitud HTTP, que contiene el método (GET, POST, etc.), la ruta al recurso solicitado, la versión del protocolo, los encabezados (User-Agent, Accept, Cookie, etc.) y, posiblemente, el cuerpo de la solicitud (para POST).
- El servidor recibe la solicitud.
- El servidor web (por ejemplo, Nginx, Apache) acepta la solicitud y, si está configurado, la pasa a la aplicación Ruby (por ejemplo, a través de Rack, Passenger, Unicorn).
- La aplicación Ruby procesa la solicitud. Esto incluye:
- Enrutamiento de la solicitud al controlador y acción correspondientes según la ruta y el método.
- Extracción de parámetros de la URL, encabezados y cuerpo de la solicitud.
- Ejecución de la lógica de la aplicación (por ejemplo, interacción con la base de datos, cálculos).
- Preparación de la respuesta.
- La aplicación Ruby genera una respuesta HTTP. Esto incluye:
- Código de estado (por ejemplo, 200 OK, 404 Not Found, 500 Internal Server Error).
- Encabezados de la respuesta (Content-Type, Content-Length, Set-Cookie, etc.).
- Cuerpo de la respuesta (HTML, JSON, XML, etc.).
- La aplicación Ruby envía la respuesta de vuelta al servidor web.
- El servidor web envía la respuesta al cliente (navegador).
- El navegador recibe la respuesta, la analiza, renderiza los datos recibidos (si es HTML) y procesa solicitudes adicionales (por ejemplo, para CSS, JS, imágenes).
- La conexión TCP puede cerrarse o mantenerse para solicitudes posteriores (Keep-Alive).
# Ejemplo de enrutamiento básico en Rails
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Enrutamiento de la URL raíz al controlador welcome, acción index
get 'users/:id', to: 'users#show' # Enrutamiento GET /users/:id al controlador users, acción show
end
# Ejemplo de controlador en Rails
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # Obtención del parámetro :id de la URL y búsqueda del usuario
# Renderizar @user (normalmente a través de una plantilla de vista)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Manejo del caso de usuario no encontrado
end
end