Sobes.tech
Middle

Que se passe-t-il après avoir obtenu le DNS et envoyé la requête à notre service?

sobes.tech IA

Réponse de l'IA

  1. Le navigateur établit une connexion TCP avec le serveur sur le port 80 (pour HTTP) ou 443 (pour HTTPS).
  2. Le navigateur envoie une requête HTTP, contenant la méthode (GET, POST, etc.), le chemin vers la ressource demandée, la version du protocole, les en-têtes (User-Agent, Accept, Cookie, etc.) et éventuellement le corps de la requête (pour POST).
  3. Le serveur reçoit la requête.
  4. Le serveur web (par exemple, Nginx, Apache) accepte la requête et, si configuré, la transmet à l’application Ruby (par exemple, via Rack, Passenger, Unicorn).
  5. L’application Ruby traite la requête. Cela inclut :
    • Le routage de la requête vers le contrôleur et l’action appropriés en fonction du chemin et de la méthode.
    • L’extraction des paramètres de l’URL, des en-têtes et du corps de la requête.
    • L’exécution de la logique de l’application (par exemple, interaction avec la base de données, calculs).
    • La préparation de la réponse.
  6. L’application Ruby génère une réponse HTTP. Elle inclut :
    • Le code de statut (par exemple, 200 OK, 404 Not Found, 500 Internal Server Error).
    • Les en-têtes de la réponse (Content-Type, Content-Length, Set-Cookie, etc.).
    • Le corps de la réponse (HTML, JSON, XML, etc.).
  7. L’application Ruby envoie la réponse au serveur web.
  8. Le serveur web envoie la réponse au client (navigateur).
  9. Le navigateur reçoit la réponse, l’analyse, rend les données reçues (si c’est du HTML) et traite les requêtes supplémentaires (par exemple, pour CSS, JS, images).
  10. La connexion TCP peut être fermée ou maintenue pour des requêtes ultérieures (Keep-Alive).
# Exemple de routage de base dans Rails
# config/routes.rb
Rails.application.routes.draw do
  root 'welcome#index' # Routage de l’URL racine vers le contrôleur welcome, action index
  get 'users/:id', to: 'users#show' # Routage GET /users/:id vers le contrôleur users, action show
end

# Exemple de contrôleur dans Rails
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def show
    @user = User.find(params[:id]) # Récupération du paramètre :id de l’URL et recherche de l’utilisateur
    # Rendu de @user (habituellement via un template de vue)
  rescue ActiveRecord::RecordNotFound
    render file: "#{Rails.root}/public/404.html", status: :not_found # Gestion du cas où l’utilisateur n’est pas trouvé
  end
end