0%

Kapitel 1

HTTP ist Text auf einem Socket

Willkommen im Kurs

Hallo, ich bin Erik. Ich schreibe und pflege diesen Kurs, zusammen mit dem Rest von Python Land.

Am Ende von Python in der Praxis hat ein einziger Aufruf von requests.get etwas an die Übungs-API geschickt, und ein und etwas kamen zurück. In Networks with Python hast du gelernt, was darunter unterwegs ist: Bytes auf einer , die in Stücken ankommen und in Frames verpackt sind, damit der Empfänger weiß, wo jede Nachricht endet. Dieser Kurs bringt beides zusammen. , das Protokoll hinter requests.get, besteht aus Textzeilen auf genau dieser Art von Verbindung, und du schreibst beide Enden selbst.

Was du baust

Der Kurs begleitet ein Projekt vom Anfang bis zum Ende.

KapitelWas du baust
1 bis 3wire.py, einen kleinen HTTP-Client: zuerst eine von Hand geschriebene Anfrage auf einem , dann Anfragen, die aus einer beliebigen gebaut werden, dann http.client aus der Standardbibliothek, das die Arbeit mit dem Socket übernimmt
4 bis 9einen Leseliste-Server, eine JSON-API für Bücher, die Schritt für Schritt wächst: Bücher lesen und schreiben, , eine Anmeldung, Caching und viele Anfragen auf einer Verbindung
10 und 11einen Client für diesen Server mit requests und httpx und denselben Server, neu geschrieben mit einem Web-Framework,
12das Abschlussprojekt: der fertige Server und Client, gemeinsam geprüft

Jede Bibliothek kommt erst, nachdem du von Hand geschrieben hast, was sie tut. So kannst du hinter jeder , die du benutzt, den Mechanismus benennen.

Was die Website erreichen kann und was nicht

Keine Lektion in diesem Kurs nimmt Kontakt mit einer echten Website auf. Die Sandboxes auf Python Land haben keine Route ins öffentliche Internet, und nichts hier tut so, als wäre es anders.

Dein Code spricht mit zwei Arten von Servern, und nur mit diesen beiden:

  • practice-api, ein kleiner HTTP-Dienst im internen Netzwerk von Python Land, der nur gelesen werden kann. Er hat keine öffentliche Adresse. Die Kapitel 1 bis 3 schicken ihm Anfragen, und eine Lektion in Kapitel 10 tut das ebenfalls.

  • Server, die du selbst schreibst. Ab Kapitel 4 lauscht dein eigener Server nur auf der 127.0.0.1, der Adresse, über die ein Rechner mit sich selbst spricht, und hält nach einer festgelegten Zahl von Verbindungen absichtlich an.

Die Website betreibt außerdem keine verschlüsselten Verbindungen. Echte Websites verwenden HTTPS, das HTTP in -Verschlüsselung einpackt; Kapitel 9 erklärt, was das hinzufügt und warum die Website es nicht zeigen kann. Alles, was du hier siehst, ist einfaches HTTP, damit du jedes Byte lesen kannst.

Was dieser Kurs von dir braucht

Du brauchst Networks with Python. Die Lektionen setzen voraus, dass du:

  • eine TCP-Verbindung mit einem Timeout öffnen und mit sendall Bytes senden kannst;

  • einen Empfangspuffer führen kannst, damit Bytes, die früh ankommen, auf das nächste Lesen warten;

  • mit read_exact genau n Bytes lesen kannst;

  • einer Funktion einen connect übergeben kannst, damit ein Test ihr einen Fake-Socket statt eines Netzwerks geben kann.

Aus Python in der Praxis brauchst du vor allem eines: einen einzelnen Aufruf von requests.get mit einem Timeout, dessen Status du geprüft und dessen JSON du dekodiert hast. Dieser Kurs nimmt diesen Aufruf auseinander.

Python Fundamentals II wird empfohlen, ist aber keine Voraussetzung. Ab Kapitel 4 enthalten manche Dateien, die der Kurs mitliefert, Zeilen mit class und Zeilen, die mit @ beginnen. Die Lektionen erklären, was du brauchst, um sie zu lesen, und keine Übung verlangt, dass du eines davon selbst schreibst. Wenn du diese Dateien ganz verstehen willst, bringt dir Fundamentals II beides bei.

An welche Server schickt dein Code in diesem Kurs Anfragen?

Lerne Monty kennen

Monty ist der Lernbegleiter von Python Land und steht dir neben jeder Lektion zur Verfügung. Bitte um eine weitere Erklärung, um einen Hinweis, der dir nicht die Lösung verrät, oder um Hilfe beim Lesen einer Fehlermeldung.

Wenn du angemeldet bist, enthält dein kostenloses Konto 5 Monty-Hilfen pro Tag, gemeinsam für alle Kurse. Eine gute erste Frage an dieser Stelle:

Was hat ein Socket in Networks with Python für meine Programme getan, in einfachen Worten?

Die Antwort ist eine nützliche Erinnerung vor der nächsten Lektion, die zeigt, wie eine HTTP-Anfrage auf diesem Socket aussieht.

Mit Guided erhältst du bis zu 50 Monty-Hilfen pro Tag. Fragen, Hinweise, Fehlererklärungen, zusätzliche Übungen und Code-Feedback teilen sich dasselbe Tageslimit. Der Zähler zeigt, wie viel noch übrig ist und wann das Limit erneuert wird. Jede Lektion und jeder normale erneute Übungsversuch bleibt kostenlos.

Wenn du die Frage oben beantwortet hast, öffnet die nächste Lektion eine HTTP-Anfrage und ihre Antwort als Bytes und zeigt, dass beide aus Zeilen bestehen.