Sobes.tech
Middle

Was passiert, nachdem wir die DNS erhalten und die Anfrage an unseren Dienst gesendet haben?

sobes.tech KI

Antwort von AI

  1. Der Browser stellt eine TCP-Verbindung zum Server auf Port 80 (für HTTP) oder 443 (für HTTPS) her.
  2. 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.
  3. Der Server empfängt die Anfrage.
  4. 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).
  5. 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.
  6. 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.).
  7. Die Ruby-Anwendung sendet die Antwort zurück an den Webserver.
  8. Der Webserver sendet die Antwort an den Client (Browser).
  9. 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).
  10. 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