Zum Inhalt

Ziele #

Das Ziel dieser API ist es, dass Daten von Sozialen Medien gescrapt werden. Mit anderen Worten einen Social Network Scraper1 mithilfe von Spring Boot zu bauen.

TL;DR

Ziele:

  • Mindestens folgende Abfragen sind über einen Benutzer möglich
  • Die API ist über REST & GraphQL abrufbar
  • Es wird eine Erklärung über GraphQL geschrieben
  • Es wird ein Lernvideo über das Thema Logging erstellt
  • Die Schnittstellen und Methoden werden mithilfe des Logging Frameworks Log4j2 geloggt
  • Es wird eine Erklärung über Testing anhand Unit Tests geschrieben
  • Die Testfällen werden automatisiert von Unit Tests geprüft
  • Schnittstellen & Methoden sind ausführlich dokumentiert

Die API wird über REST und GraphQL aufrufbar sein. Daraus sollten die Vor- und Nachteile der Technologien aufgezeigt werden und ein Grundverständnis entstehen. Um dies zu überprüfen, wird eine Erklärung geschrieben, welche hier zu finden sein wird.

Das Projekt wird mithilfe des Logging Frameworks Log4j2 (SLF4) geloggt. Anhand der Logs sollte auch in der Produktion die API überwacht werden können. Wenn ein Fehler entsteht, sollte dieser ersichtlich, mit dem entsprechenden Log Level, gemeldet werden. In einem Video Video, welches bis zum 08.05.2022 fertiggestellt wird, wird das Thema Logging erklärt und aufgezeigt.

Das händische Testen der Testfälle ist sehr zeitaufwändig. Aus diesem Grund werden alle definierten Testfälle automatisch mit Unit Tests getestet. Über das Testen wird zudem eine Dokumentation geschrieben, welche hier zu finden sein wird. Die Dokumentation wird bis zum 15.05.2022 fertig geschrieben sein. Alle Tests müssen am Ende des Projektes erfolgreich durchgeführt werden können. Dies sollte automatisch mithilfe von GitHub Actions geprüft werden können. Integrationstests werden nicht durchgeführt, da diese zu Umfangreich sind.

Damit neue Entwickler sich schnell in das Projekt einarbeiten können werden die Methoden mithilfe von JavaDoc dokumentiert. Zusätzlich zu den Inline Kommentaren wird eine Beschreibung der REST-Schnittstellen erstellt. Nach dem Fertigstellen werden sie hier zu finden sein. Was es mit der Dokumentation des GraphQL Endpunktes auf sich hat wird auch in der bereits genannten Erklärung geschrieben.

Da die API an sich sehr umfangreich ist und möglichst viel Wert auf die Qualität gelegt wird, wird es kein GUI geben. Dies würde den Umfang des Projektes sprengen. Für Interessierte gibt es jedoch ein Projekt, welches parallel verlaufen wird. Im Modul M120 (Benutzerschnittstellen implementieren) wird für dieses Projekt ein GUI mit JavaFX gebaut.

Das ganze Projekt mit allen Funktionen wird bis zum 12.06.2022 fertiggestellt sein. Weitere wichtige Daten befinden sich im Abschnitt Meilensteine.

Abfragen#

Die genaue Liste, was alles abgefragt werden kann, befindet sich hier. Diese Abfragen bilden die Mindestanforderungen, welche das Projekt erfüllen muss. Es ist somit freigehalten, was und ob Erweiterungen hinzugefügt werden.

Die Anzahl der Plattformen wurde bewusst wegen des Zeitmangels klein gehalten. Das Projekt wird jedoch so aufgebaut werden, dass das Hinzufügen von weiteren Plattformen keine Komplikationen verursachen wird.

Motivation#

Auf die Idee, einen SNS1 zu bauen, bin ich gekommen, da es mich nervte, jeden Tag auf allen verschiedenen Netzwerken nach den neusten Informationen zu suchen. Ich dachte mir, dass es eine bessere Möglichkeit geben muss, damit ich zu diesen Daten kommen kann.

Diese API sollte somit das Problem lösen, dass über diverse Soziale Plattformen Informationen abgefragt werden können. Diese Informationen sollten dann in einem einheitlichen Format zur Verfügung stehen.

Meilensteine#

In einem Journal gibt es ein Verlauf, was für Schritte gemacht wurden.

Wichtige Abgabedaten:

Logs#

Damit auch in Produktion das Programm überwacht und debuggt werden kann, wird die API mit einem Logging Framework konzipiert. Dieses Login Framework nennt sich Log4j2. Dabei ist es wichtig anzumerken, dass die 2. Version verwendet wird, welche deutliche Verbesserungen mit sich bringt. Das Ziel ist es, dass mithilfe der unterschiedlichen Logging Levels zu verstehen, wieso etwas nicht so funktioniert, wie es hätte sollen. Wie die Logs aufgebaut sind und was sie enthalten sind, wird auf dieser Seite beschrieben.

Tests#

Das Projekt wird mithilfe von Unit Tests getestet. So wird die Funktionalität der API gewährleistet. Eine genaue Beschreibung befindet sich hier. Da ein eigenes Ziel von diesem Projekt ist, dass möglichst alles automatisiert ist, werden die Tests nach jedem Commit in den main Branche automatisch ausgeführt. Über diesen Link kann der Status der Tests abgerufen werden. Integrationstests werden wegen Zeitgründen nicht durchgeführt.

Testfälle#

In einem Testprotokoll werden Testfälle und deren Ergebnisse festgehalten. Sie werden seit Beginn des Projektes weitergeführt und ständig angepasst. Zur Übersichtlichkeit sind sie in Kategorien die Kategorien Allgemeine, API-Key, Twitter und Instagram unterteilt. Am Ende der Seite befinden sich die Resultate dieser Tests. Diese befinden sich in einer eigenen Seite zur besseren Navigation.