14th Java Lesson (Java Course @ TUD)

https://github.com/Trivo25/tud-java-course

February 3, 2022

Während Ihr darauf wartet, dass es beginnt..

Java

Objektorientierte Programmierung

Florian Kluge, Moritz Schulz

  1. Februar 2022


Florian.Kluge@mailbox.tu-dresden.de

Moritz.Schulz2@mailbox.tu-dresden.de

Was wir heute machen

Projekt, Teil 2/2: Quizanwendung mit REST-Client

  1. Klassendiagramm umsetzen
  2. REST-API anbinden

Contact

Florian Kluge

Florian.Kluge@mailbox.tu-dresden.de

Moritz Schulz

Moritz.Schulz2@mailbox.tu-dresden.de

Kurze Info zum Kurs

  • praktische Aufgaben- und Beispiel-basierte Lernweise
    • wir laufen herum und gucken, dass ihr zurecht kommt
  • bitte, fragt gern, jederzeit
    • auch per E-Mail / via Kursseite
  • uns geht es darum, alle mitzunehmen

Stay up to date

  • die E-Mails der TUD regelmäßig überprüfen
    • z.B. Bekanntgabe der Veröffentlichung der Folien
      • auf der Seite des Programmierkurses

Projektidee

  • Quizanwendung
    • stellt Fragen in der Konsole
    • überprüft Eingaben des Nutzers
  • heute: Klassenmodell
  • heute: später erweitern mit Netzwerkanfragen
    • das heißt: die Fragen und Antworten kommen von einem Server via Internet

Klassenmodell

  • zur Erweiterbarkeit, Austausch von Komponenten und bestimmen Funktionalitäten
  • Legende zum Diagram
    • kursiv: optional
    • unterstrichen: static
  • ladeFragen() füllt quizfragen
    • die Methode trägt in quizfragen mehrere Quizfrage-Objekte ein
    • siehe Stunde 11 mit ArrayLists: Beispielcode
    • nutzt dazu Konstruktor Quizfrage(String, String)
  • leiteQuiz() stellt alle Quizfragen
    • bekommt Frage mit Quizfrage.getFrage()
    • kontrolliert Antwort mit Quizfrage.stimmtAntwort()
  • main(String[] args) erstellt ein Quizmanager-Objekt und ruft die beiden Funktionen auf

Projektidee

  • Quizanwendung
    • stellt Fragen in der Konsole
    • überprüft Eingaben des Nutzers
  • fertig: Klassenmodell
  • jetzt: später erweitern mit Netzwerkanfragen
    • das heißt: die Fragen und Antworten kommen von einem Server via Internet

kurze Einführung in APIs und HTTP-Requests

Was ist eine API?

  • eine API ermöglicht uns, mit anderen Modulen / Programmen (egal ob Server oder lokal) zu kommunizieren
  • ihr habt bereits mit einer API gearbeitet

REST(ful) APIs

Was ist eine REST-API?

  • eine REST-API ist ein Weg, um mit einem (Web)Server zu kommunizieren
  • wenn ihr eine Website öffnet wird ebenfalls ein request an den Server gestellt
  • der Server antwortet dann mit einer response
  • das ganze passiert über HTTP(s)

REST(ful) APIs

REST(ful) APIs

  • Funktion:
    • wir stellen requests an den Server
    • der Server antwortet mit einer response
  • Wir können so dem Server sagen was er machen soll

REST(ful) APIs

  • ein API Aufruf beinhaltet immer eine
    • IP/Hostname/Domain
    • und einen Endpoint (Pfad)
      • der Endpoint spezifiziert unsere Aktion
    • zusammen mit Protokoll = URL
  • eg. google.com/search - sagt Google, dass es suchen soll

REST(ful) APIs

  • in unserem Beispiel sieht das so aus
    • IP: 144.76.106.99:8081
    • Endpoints:
      • /questions - Der Server antwortet euch mit allen Fragen
      • /createNew - Ihr erstellt einen neuen Account
      • /verify - Ihr könnt eure Antworten verifizieren

REST(ful) APIs

ein Template findet ihr hier:

https://github.com/Trivo25/java-tud-rest-api/blob/main/java_template/QuizService.java

REST(ful) APIs

  • das Template gibt euch folgende overloaded Funktion:
    • void sendRequest(String url, HashMap<String, String> payload); // mit "payload"
    • void sendRequest(String url); // ohne "payload"

REST(ful) APIs

Erstellung eines Accounts auf dem Leaderboard

    HashMap<String, String> requestData = new HashMap<>();
    requestData.put("name", "Florian");
    QuizService.sendRequest("<a href="http://144.76.106.99:8081/createNew",">http://144.76.106.99:8081/createNew",</a>
        requestData);

Ressourcenempfelungen