Middle
Was passiert, nachdem wir die DNS erhalten und die Anfrage an unseren Dienst gesendet haben?
sobes.tech KI
Antwort von AI
- Der Browser stellt eine TCP-Verbindung zum Server auf Port 80 (für HTTP) oder 443 (für HTTPS) her.
- Der Browser sendet eine HTTP-Anfrage, die die Methode (GET, POST usw.), den Pfad zur angeforderten Ressource, die Protokollversion, die Header (User-Agent, Accept, Cookie usw.) und möglicherweise den Anfragetext (bei POST) enthält.
- Der Server empfängt die Anfrage.
- Der Webserver (z.B. Nginx, Apache) akzeptiert die Anfrage und leitet sie, falls konfiguriert, an die Ruby-Anwendung weiter (z.B. über Rack, Passenger, Unicorn).
- Die Ruby-Anwendung verarbeitet die Anfrage. Dazu gehört:
- Routing der Anfrage an den entsprechenden Controller und die Aktion basierend auf Pfad und Methode.
- Extrahieren der Parameter aus URL, Headern und Anfragetext.
- Ausführen der Anwendungslogik (z.B. Datenbankinteraktion, Berechnungen).
- Vorbereiten der Antwort.
- Die Ruby-Anwendung generiert eine HTTP-Antwort. Diese umfasst:
- Statuscode (z.B. 200 OK, 404 Not Found, 500 Internal Server Error).
- Antwort-Header (Content-Type, Content-Length, Set-Cookie usw.).
- Antworttext (HTML, JSON, XML usw.).
- Die Ruby-Anwendung sendet die Antwort zurück an den Webserver.
- Der Webserver sendet die Antwort an den Client (Browser).
- Der Browser erhält die Antwort, analysiert sie, rendert die empfangenen Daten (falls HTML) und verarbeitet zusätzliche Anfragen (z.B. für CSS, JS, Bilder).
- Die TCP-Verbindung kann geschlossen oder für weitere Anfragen aufrechterhalten werden (Keep-Alive).
# Beispiel für grundlegendes Routing in Rails
# config/routes.rb
Rails.application.routes.draw do
root 'welcome#index' # Routing der Wurzel-URL zum welcome-Controller, Aktion index
get 'users/:id', to: 'users#show' # Routing GET /users/:id zum users-Controller, Aktion show
end
# Beispiel für einen Controller in Rails
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def show
@user = User.find(params[:id]) # Parameter :id aus URL holen und Nutzer suchen
# Rendern von @user (meistens über eine View-Vorlage)
rescue ActiveRecord::RecordNotFound
render file: "#{Rails.root}/public/404.html", status: :not_found # Behandlung des Falls, dass Nutzer nicht gefunden wird
end
end