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 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.
| Kapitel | Was du baust |
|---|---|
| 1 bis 3 | wire.py, einen kleinen HTTP-Client: zuerst eine von Hand geschriebene Anfrage auf einem http.client aus der Standardbibliothek, das die Arbeit mit dem Socket übernimmt |
| 4 bis 9 | einen Leseliste-Server, eine JSON-API für Bücher, die Schritt für Schritt wächst: Bücher lesen und schreiben, |
| 10 und 11 | einen Client für diesen Server mit requests und httpx und denselben Server, neu geschrieben mit einem Web-Framework, |
| 12 | das 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
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
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
sendallBytes senden kannst;einen Empfangspuffer führen kannst, damit Bytes, die früh ankommen, auf das nächste Lesen warten;
mit
read_exactgenaunBytes 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.