Sobes.tech
Middle

¿Qué sucede después de que recibimos el DNS y enviamos la solicitud a nuestro servicio?

sobes.tech AI

Respuesta de la IA

  1. El navegador establece una conexión TCP con el servidor en el puerto 80 (para HTTP) o 443 (para HTTPS).
  2. 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).
  3. El servidor recibe la solicitud.
  4. 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).
  5. 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.
  6. 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.).
  7. La aplicación Ruby envía la respuesta de vuelta al servidor web.
  8. El servidor web envía la respuesta al cliente (navegador).
  9. 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).
  10. 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