„Läuft auf meinem Laptop“ heißt: erreichbar nur für dich. „Im Internet“ heißt: erreichbar für alle. Der Unterschied ist eine öffentliche Adresse — und genau die schließt das Deployen am Ende auf. Wer versteht, wie Nachrichten reisen, kann Fehler viel schneller einordnen.
Die Idee
Das Internet ist wie ein riesiges Postsystem. Jeder Computer hat eine Adresse. Du schickst einen Brief („Zeig mir diese Seite“), der Empfänger schickt einen Brief zurück („Hier ist sie“). Mehr ist es im Kern nicht: Adressen und Zustellung.
Wenn du Instagram öffnest, schickt dein Handy Hunderte solcher Briefe: einen, um den Feed zu holen, einen pro Foto, einen wenn du ein Herz antippst. Jede Aktion ist ein kleiner Hin-und-zurück zwischen deinem Gerät und Instagrams Servern.
flowchart LR
A[Dein Gerät] -->|Brief: gib mir den Feed| S[Instagram-Server]
S -->|Brief: hier ist der Feed| A
So funktioniert es
Vier Begriffe genügen:
- IP-Adresse: die Hausnummer eines Computers (z. B.
203.0.113.5). - DNS: das Telefonbuch. Du tippst
instagram.com, DNS liefert die passende IP. - HTTP: die Sprache der Briefe — ein Request hin, eine Response zurück.
- HTTPS: dasselbe, aber verschlossen (verschlüsselt) — das Schloss-Symbol im Browser.
So läuft das Öffnen eines Feeds ab: dein Browser fragt DNS nach der Adresse, verbindet sich per HTTPS und stellt einen Request.
sequenceDiagram
participant B as Browser
participant D as DNS
participant S as Instagram-Server
B->>D: Wie lautet die IP von instagram.com?
D-->>B: 203.0.113.5
B->>S: GET /feed (HTTPS)
S-->>B: 200 OK + Beiträge als JSON
Ein HTTP-Request hat eine Methode, einen Pfad, Header und optional einen Body. So sieht ein vollständiger Request aus, wenn du auf Instagram einen Beitrag postest:
POST /api/posts HTTP/1.1
Host: instagram.example
Content-Type: application/json
Authorization: Bearer <token>
{
"caption": "Sonnenuntergang über Berlin",
"imageUrl": "https://cdn.example/p/a1b2.jpg"
}
Und die Response — mit Statuscode und Body:
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "p_184029",
"author": "anna",
"caption": "Sonnenuntergang über Berlin",
"imageUrl": "https://cdn.example/p/a1b2.jpg",
"likeCount": 0,
"createdAt": "2026-08-31T09:41:00Z"
}
Zeile für Zeile: POST ist die Methode (etwas anlegen), /api/posts der Pfad, Host sagt an welchen Server, Content-Type welches Format der Body hat, Authorization beweist wer du bist. Die Response 201 Created heißt „erfolgreich angelegt“ und schickt den fertigen Beitrag inklusive id und createdAt zurück.
So steuerst du es
Wichtige Statuscodes: 200 OK, 201 Erstellt, 400 schlechte Anfrage, 401 nicht eingeloggt, 403 verboten, 404 nicht gefunden, 500 Serverfehler. Ein häufiger Fehler ist, 200 zurückzugeben, obwohl etwas schiefging — dann kann das Frontend echte Fehler nicht erkennen und zeigt „gespeichert“, obwohl nichts gespeichert wurde.
HTTPS ist heute Pflicht: Über HTTP könnten Fremde Authorization-Token unterwegs mitlesen. Bei Cloud Run bekommst du HTTPS automatisch.
So sagst du es dem Agenten:
„Zeig mir für ‚Beitrag posten‘ den vollständigen HTTP-Request (Methode, Pfad, Header, Body) und die erwartete Response mit Statuscode.“
„Gib bei Fehlern passende Statuscodes zurück (400 bei ungültigem Body, 401 ohne Login), nicht immer 200.“
„Sende das
Authorization-Token nur über HTTPS und niemals im Klartext in einer URL.“
Typische Fehler: Statuscodes ignorieren; Geheimnisse in die URL packen (landen in Server-Logs); oder annehmen, das Frontend müsse Fehler nicht behandeln.
Kurz-Check
- Was macht DNS?
- Woraus besteht ein HTTP-Request?
- Warum ist
201 Createdbesser als200 OK, wenn ein Beitrag angelegt wurde?
Antworten anzeigen
- Es übersetzt einen Namen (
instagram.com) in eine IP-Adresse. - Aus Methode, Pfad, Headern und optional einem Body.
201sagt genau „neu angelegt“; das Frontend weiß dadurch, dass die Erstellung geklappt hat, und kann z. B. die neueidverwenden.