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.