Server-seitige Web-Frameworks
Der vorherige Artikel zeigte Ihnen, wie die Kommunikation zwischen Web-Clients und -Servern aussieht, die Natur von HTTP-Anfragen und -Antworten und was eine serverseitige Webanwendung tun muss, um auf Anfragen von einem Webbrowser zu reagieren. Mit diesem Wissen ist es nun an der Zeit zu erkunden, wie Web-Frameworks diese Aufgaben vereinfachen können und Ihnen eine Vorstellung davon zu geben, wie Sie ein Framework für Ihre erste serverseitige Webanwendung auswählen würden.
Voraussetzungen: | Grundlegendes Verständnis dafür, wie serverseitiger Code HTTP-Anfragen verarbeitet und darauf antwortet (siehe Client-Server-Überblick). |
---|---|
Ziel: | Zu verstehen, wie Web-Frameworks die Entwicklung/Wartung von serverseitigem Code vereinfachen können und die Leser dazu zu bringen, darüber nachzudenken, ein Framework für ihre eigene Entwicklung auszuwählen. |
Die folgenden Abschnitte veranschaulichen einige Punkte anhand von Codefragmenten aus realen Web-Frameworks. Seien Sie nicht beunruhigt, wenn jetzt nicht alles Sinn ergibt; wir werden Sie in unseren framework-spezifischen Modulen durch den Code führen.
Überblick
Server-seitige Web-Frameworks (auch bekannt als "Webanwendungs-Frameworks") sind Software-Frameworks, die es einfacher machen, Webanwendungen zu schreiben, zu warten und zu skalieren. Sie bieten Werkzeuge und Bibliotheken, die gängige Webentwicklungstätigkeiten vereinfachen, einschließlich der Zuordnung von URLs zu geeigneten Handlern, der Interaktion mit Datenbanken, Unterstützung von Sessions und Benutzerautorisierung, Formatierung von Ausgaben (z. B. HTML, JSON, XML) und der Verbesserung der Sicherheit gegen Webangriffe.
Im nächsten Abschnitt wird detaillierter erläutert, wie Web-Frameworks die Webanwendungsentwicklung erleichtern können. Danach erklären wir einige der Kriterien, die Sie bei der Auswahl eines Web-Frameworks verwenden können, und listen einige Ihrer Optionen auf.
Was kann ein Web-Framework für Sie tun?
Web-Frameworks bieten Werkzeuge und Bibliotheken, um gängige Webentwicklungsoperationen zu vereinfachen. Sie müssen kein serverseitiges Web-Framework verwenden, aber es wird dringend empfohlen — es wird Ihnen das Leben erheblich erleichtern.
In diesem Abschnitt werden einige der Funktionalitäten diskutiert, die häufig von Web-Frameworks bereitgestellt werden (nicht jedes Framework stellt notwendigerweise all diese Funktionen bereit!).
Arbeiten Sie direkt mit HTTP-Anfragen und -Antworten
Wie wir im letzten Artikel gesehen haben, kommunizieren Webserver und Browser über das HTTP-Protokoll — Server warten auf HTTP-Anfragen vom Browser und geben dann Informationen in HTTP-Antworten zurück. Web-Frameworks ermöglichen es Ihnen, eine vereinfachte Syntax zu schreiben, die serverseitigen Code generieren wird, um mit diesen Anfragen und Antworten zu arbeiten. Das bedeutet, dass Sie eine leichtere Aufgabe haben werden, indem Sie mit einer einfacheren, höherstufigen Codierung arbeiten, anstatt mit niedrigstufigen Netzwerktechniken.
Das folgende Beispiel zeigt, wie dies im Django (Python) Web-Framework funktioniert. Jede "View"-Funktion (ein Anfrage-Handler) erhält ein HttpRequest
-Objekt, das Anfrageninformationen enthält, und muss ein HttpResponse
-Objekt mit der formatierten Ausgabe zurückgeben (in diesem Fall ein String).
# Django view function
from django.http import HttpResponse
def index(request):
# Get an HttpRequest (request)
# perform operations using information from the request.
# Return HttpResponse
return HttpResponse('Output string to return')
Leiten Sie Anfragen an den entsprechenden Handler weiter
Die meisten Websites bieten eine Reihe unterschiedlicher Ressourcen, die über verschiedene URLs zugänglich sind. Alle diese in einer Funktion zu handhaben, wäre schwer wartbar, daher bieten Web-Frameworks einfache Mechanismen, um URL-Muster bestimmten Handler-Funktionen zuzuordnen. Dieser Ansatz hat auch Vorteile in Bezug auf die Wartung, da Sie die URL ändern können, die zur Bereitstellung einer bestimmten Funktion verwendet wird, ohne den zugrunde liegenden Code ändern zu müssen.
Verschiedene Frameworks verwenden unterschiedliche Mechanismen für die Zuordnung. Zum Beispiel fügt das Flask (Python) Web-Framework Routen zu View-Funktionen mithilfe eines Dekorators hinzu.
@app.route("/")
def hello():
return "Hello World!"
Während Django von Entwicklern erwartet, eine Liste von URL-Zuordnungen zwischen einem URL-Muster und einer View-Funktion zu definieren.
urlpatterns = [
url(r'^