Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:web:webapps:apis [2025-02-03 13:11] – [Web-APIs und JSON] hof | talit:web:webapps:apis [2025-02-16 16:29] (aktuell) – [JSON] hof | ||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
Wir trennen also die Darstellung (HTML & CSS) von der Spiellogik ab. Die Logik soll auf dem Server ausgeführt werden, die Browser rufen lediglich geeignete Schnittstellen (en. _Application Programming Interface_ oder API) auf. Bei einer Web-App erfolgt der Aufruf der Schnittstelle über eine HTTP-Anfrage. | Wir trennen also die Darstellung (HTML & CSS) von der Spiellogik ab. Die Logik soll auf dem Server ausgeführt werden, die Browser rufen lediglich geeignete Schnittstellen (en. _Application Programming Interface_ oder API) auf. Bei einer Web-App erfolgt der Aufruf der Schnittstelle über eine HTTP-Anfrage. | ||
- | |||
### HTTP | ### HTTP | ||
- | Das HyperText Transfer Protocol dient der Übertragung von Informationen zwischen Server und Client (Browser). Bisher haben wir ausschliesslich ganze Dateien (`tictactoe.html`, `tictactoe.css`, `tictactoe.js`) übertragen, | + | Das HyperText Transfer Protocol dient der Übertragung von Informationen zwischen Server und Client (Browser). Bisher haben wir ausschliesslich ganze Dateien (`connect4.html`, `connect4.css`, `connect4.js`) übertragen, |
#### Request & Response | #### Request & Response | ||
Zeile 41: | Zeile 40: | ||
Wir werden diese Technik verwenden, um den Spielstand auf dem Server nachzuladen, | Wir werden diese Technik verwenden, um den Spielstand auf dem Server nachzuladen, | ||
- | |||
#### Asynchronous code | #### Asynchronous code | ||
- | Eine Herausforderung in Javascript (und nicht nur dort) ist der Umgang mit längeren Aufgaben. Reagiert unser Code ja auf einen Event (z.B. einen Klick) und führt dann eine kurze Aufgabe (z.B. den Game-State ändern) aus, ist das kein Problem. Wollen wir eine potentiell längere Aufgabe (insbesondere: | + | Eine Herausforderung in Javascript (und nicht nur dort) ist der Umgang mit längeren Aufgaben. Reagiert unser Code lokal auf einen Event (z.B. einen Klick) und führt dann eine kurze Aufgabe (z.B. den Game-State ändern) aus, ist das kein Problem. Wollen wir eine potentiell längere Aufgabe (insbesondere: |
Wir wollen längere Aufgaben // | Wir wollen längere Aufgaben // | ||
Zeile 57: | Zeile 55: | ||
<code javascript> | <code javascript> | ||
- | async fetchUpdateFromServer() { | + | async function |
try { | try { | ||
const response = await fetch('/ | const response = await fetch('/ | ||
Zeile 77: | Zeile 75: | ||
{{ : | {{ : | ||
- | |||
### JSON | ### JSON | ||
- | Sollen nicht ganze Dateien, sondern nur kleine Informationsschnipsel übertragen werden, wird dafür die JavaScript Object Notation (_JSON_) verwendet. JSON sieht so aus: | + | Sollen nicht ganze Dateien, sondern nur kleine Informationsschnipsel übertragen werden, wird dafür die JavaScript Object Notation (_JSON_) verwendet. |
<code javascript> | <code javascript> | ||
- | { | + | game = { |
- | " | + | " |
- | " | + | "board": [ // game board, 0 for empty cells, 1 or 2 for filled cells. |
- | " | + | |
- | | + | |
- | | + | |
- | " ", | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
], | ], | ||
- | "winner": | + | "next": |
- | "player": " | + | } |
- | " | + | </ |
- | }</ | + | |
Merke: | Merke: | ||
Zeile 109: | Zeile 102: | ||
* wieder ein Objekt. | * wieder ein Objekt. | ||
* Mehrere Einträge sind durch Komma getrennt. | * Mehrere Einträge sind durch Komma getrennt. | ||
+ | |||
### Web-API Beispiel | ### Web-API Beispiel | ||
- | Bevor wir ein eigenes Web-API für TicTacToe | + | Bevor wir ein eigenes Web-API für Vier Gewinnt |
Die Seite https:// | Die Seite https:// |