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
- Le navigateur établit une connexion TCP avec le serveur sur le port 80 (pour HTTP) ou 443 (pour HTTPS).
- 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).
- Le serveur reçoit la requête.
- 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).
- 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.
- 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.).
- L’application Ruby envoie la réponse au serveur web.
- Le serveur web envoie la réponse au client (navigateur).
- 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).
- 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