Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Was ist Middleware in Ruby on Rails und wann wird sie verwendet?

Beitrags-Cover: Was ist Middleware in Ruby on Rails und wann wird sie verwendet?
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Middleware in Ruby on Rails ist eine Zwischenschicht zwischen der Client-Anfrage und der Webanwendung. Es empfängt die Anfrage, bevor sie den Controller erreicht, und kann sie ändern oder verarbeiten. Ebenso kann Middleware die Antwort von der Anwendung abfangen, bevor sie an den Client gesendet wird.
Rails ist auf der Rack-Bibliothek aufgebaut, die einen Standard für solche Zwischenschichten definiert. Middleware ist in diesem Kontext eine gewöhnliche Ruby-Klasse, die die Methode call(env) implementiert. Der Parameter env enthält alle Informationen über die HTTP-Anfrage (z. B. Pfad, Header, Methode). Die Methode muss ein Array mit drei Elementen zurückgeben: Status der Antwort, Header und Body.
Ein einfachstes Beispiel für eigenes Middleware könnte so aussehen:
class RequestLogger
  def initialize(app)
    @app = app
  end

  def call(env)
    puts "Anfrage erhalten zu #{env['PATH_INFO']}"
    status, headers, body = @app.call(env)
    puts "Status zurückgegeben #{status}"
    [status, headers, body]
  end
end
In diesem Beispiel wird jede Anfrage in der Konsole protokolliert - sowohl beim Eintreffen als auch nach der Verarbeitung.
Middleware wird häufig für folgende Aufgaben verwendet:
  • Protokollierung von Anfragen und Antworten;
  • Caching;
  • Fehlerbehandlung;
  • Authentifizierung oder Token-Überprüfung;
  • Kompression oder Modifikation des Antwortkörpers;
  • Setzen von gemeinsamen Headern.
In Rails wird die Middleware-Kette in der Datei config/application.rb definiert oder kann mit dem Befehl angezeigt werden:
bin/rails middleware
Um eigenes Middleware hinzuzufügen, kann es in den Stack eingefügt werden:
config.middleware.use RequestLogger
oder zwischen anderen Schichten:
config.middleware.insert_before Rack::Runtime, RequestLogger
Middleware hilft, technische Aspekte der Anfrageverarbeitung zu isolieren - Logik, die nicht direkt mit dem Geschäftscode verbunden ist. Dies macht die Anwendung sauberer, erweiterbarer und leichter wartbar.

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

module_function in Ruby: wenn die Methoden eines Moduls sowohl als Modulmethoden als auch als Funktionen verfügbar sind
29. Okt, 21:53 Uhr

module_function in Ruby: wenn die Methoden eines Moduls sowohl als Modulmethoden als auch als Funktionen verfügbar sind

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Memoization in Ruby?
30. Okt, 10:17 Uhr

Was ist Memoization in Ruby?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?
30. Okt, 19:55 Uhr

is_a?, kind_of?, instance_of? — wie prüft Ruby den Typ eines Objekts?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann
30. Okt, 20:23 Uhr

&& vs and — der Unterschied in Ruby, der Ihren Code brechen kann

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Variablen in Ruby: @, @@ und Klasseninstanzvariablen
30. Okt, 20:54 Uhr

Variablen in Ruby: @, @@ und Klasseninstanzvariablen

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby
30. Okt, 21:06 Uhr

Der Unterschied zwischen blank?, present?, empty? und nil? in Ruby

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist der Vanilla Rails-Ansatz?
14. Nov, 16:48 Uhr

Was ist der Vanilla Rails-Ansatz?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist Elasticsearch und wie funktioniert es?
22. Nov, 12:35 Uhr

Was ist Elasticsearch und wie funktioniert es?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist eine Zeitreihen-Datenbank?
22. Nov, 12:42 Uhr

Was ist eine Zeitreihen-Datenbank?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
22. Nov, 12:49 Uhr

Was ist VACUUM in PostgreSQL?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Was ist ein B-Baum (ausgeglichener Baum)?
22. Nov, 12:58 Uhr

Was ist ein B-Baum (ausgeglichener Baum)?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)
30. Dez, 14:05 Uhr

Fix des Problems bei der Installation von Ruby 3.4.3 (und nicht nur) über RVM auf macOS (Apple Silicon)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska