Backend Flashcards

1
Q

Was ist der Security Decorator und was macht er?

A

Der “Security Decorator” ist eine Umsetzung des Decorator Patterns in der Softwareentwicklung mit Schwerpunkt auf Sicherheitsaspekten. In diesem Kontext enthält er die “secured”-Funktion, die ein Cookie mit einem Token aus dem Browser liest. Dieser Token wird genutzt, um bei der Firebase API nach Informationen über den Benutzer zu fragen. Die erhaltene lange ID identifiziert die Person, welche die Client-Session gestartet hat. Die “secured”-Funktion gibt ein Objekt zurück, das Informationen über den Benutzer enthält. Diese Implementierung ermöglicht die modulare und wiederverwendbare Ergänzung von Sicherheitsfunktionen, wie Authentifizierung und Autorisierung, ohne die Kernlogik der Anwendung zu verändern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist Flask?

A

Flask ist ein leichtgewichtiges Web-Framework für die Programmiersprache Python. Es wurde entwickelt, um einfach und flexibel zu sein und ermöglicht die Erstellung von Webanwendungen und APIs. Flask bietet die grundlegenden Funktionen, die für Webentwicklung erforderlich sind, ohne dabei zu viele Strukturen vorzugeben.

Einige Merkmale von Flask:

  1. Routing: Ermöglicht das Zuordnen von URLs zu Funktionen (sogenannte “Views”), um den Ablauf von Anfragen zu steuern.
  2. Templates: Flask unterstützt die Verwendung von Jinja2-Templates, um dynamische HTML-Seiten zu erstellen.
  3. Werkzeug und Jinja2: Flask baut auf Werkzeug (Toolbox für WSGI) und Jinja2 (Template-Engine) auf.
  4. Erweiterbarkeit: Durch zahlreiche Erweiterungen kann Flask mit zusätzlichen Funktionen wie Datenbankintegration, Authentifizierung und mehr ausgestattet werden.
  5. Entwicklerfreundlichkeit: Flask ist darauf ausgelegt, einfach zu verwenden und eine geringe Einstiegshürde für Entwickler zu bieten.

Es ist wichtig zu beachten, dass Flask im Vergleich zu anderen Web-Frameworks, wie z.B. Django, bewusst minimalistischer ist. Das macht es besonders gut geeignet für kleinere bis mittlere Projekte oder wenn Sie mehr Kontrolle über die Komponenten Ihrer Anwendung wünschen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist der Unterschied zwischen Framework und Library?

A

Ein wesentlicher Unterschied zwischen den beiden ist die Umkehrung der Kontrolle. Bei der Verwendung einer Library bleibt die Kontrolle beim Entwickler, der der Anwendung sagt, wann sie die Library-Funktionen aufrufen soll. Bei der Verwendung eines Frameworks ist die Kontrolle umgekehrt, d. h. das Framework sagt dem Entwickler, wo Code bereitgestellt werden muss, und ruft ihn nach Bedarf auf. Word: Der Unterschied zwischen den beiden liegt im Inversion Control = Wenn man eine Library benutzt ist man für den Applikationsverlauf/flow verantwortlich, wie z.B Wir suchen uns selbst aus wann und wo wir die Library benutzen. Bei dem Framework ist es so dass das Framework den Applikationsflow zuständig ist, also es bietet gewisse Umgebungen an in der wir unseren Code einfügen können und das Framework ruft dann den Code auf, wenn er diesen benötigt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Zusatzfrage: was ist das Ziel von Frameworks/Librarys?

A

Frameworks und Bibliotheken haben dasselbe Ziel: Sie erweitern die Palette der Funktionen, die den Entwicklern zur Verfügung stehen, optimieren ihren Arbeitsaufwand und reduzieren den Rahmen für Fehler und ineffizienten Code. Frameworks und Bibliotheken sind von Dritten entwickelte Code-Blöcke, die bei der Lösung gängiger Probleme in einer bestimmten Programmiersprache helfen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist eine API?

A

Eine API (Application Programming Interface) ist eine Schnittstelle zum Austausch von Daten, in der Regel zwischen einem Client und einem Server. Es handelt sich um eine Schnittstelle für eine bestimmte Anwendung, die nur Befehle entgegennimmt und keine visuelle Darstellungsschicht (Presentation Layer) hat. Hier werden ausschließlich Anfragen gesendet. Als Antwort erhalten wir Daten, normalerweise im JSON-Format.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Woraus besteht ein Request?

A

Ein HTTP-Request, der zur Kommunikation zwischen einem Client und einem Server verwendet wird, besteht aus mehreren Teilen. Hier sind die grundlegenden Bestandteile eines HTTP-Requests:

  1. Request-Line:
    • Die erste Zeile des Requests enthält Informationen über die Anfrage, einschließlich der verwendeten HTTP-Methode (GET, POST, etc.), der URL und der verwendeten Protokollversion.
    Beispiel:GET /example/path HTTP/1.1
  2. Header:
    • Der Header enthält zusätzliche Informationen über den Request, wie z.B. die Art des Clients, akzeptierte Datenformate, Authentifizierungsdaten und mehr.
    Beispiel:Host: example.com
    Accept: application/json
    `
  3. Leerzeile:
    • Eine Leerzeile trennt den Header vom optionalen Body des Requests.
  4. Body (optional):
    • Der Body enthält zusätzliche Daten, die mit der Anfrage gesendet werden können. Dies ist häufig bei POST- oder PUT-Anfragen der Fall, wenn Daten übermittelt werden.
    Beispiel:{ “key”: “value” }

Zusammen ergibt dies einen vollständigen HTTP-Request. Der Server verarbeitet diese Anfrage und sendet eine entsprechende HTTP-Response zurück an den Client.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist die Applikationslogik?

A

Die Applikationslogik, auch als Business-Logik oder Geschäftslogik bezeichnet, ist der Teil einer Softwareanwendung, der für die Verarbeitung und Ausführung der eigentlichen Geschäftsregeln und -anforderungen verantwortlich ist. Diese Logik implementiert die spezifischen Funktionen und Operationen, die für die Kernfunktionalität der Anwendung notwendig sind.

Die Applikationslogik kann verschiedene Aufgaben umfassen, wie:

  1. Datenverarbeitung: Verarbeitung von Benutzereingaben, Berechnungen, Datenmanipulation und -validierung.
  2. Geschäftsregeln: Umsetzung der logischen Regeln und Prozesse, die für das Kerngeschäft der Anwendung relevant sind. Dies könnte beispielsweise Preisberechnungen, Bestandsverwaltung oder Benutzerauthentifizierung umfassen.
  3. Workflows: Definition und Ausführung von Prozessabläufen, die die Interaktionen innerhalb der Anwendung steuern.
  4. Datenzugriff: Interaktion mit der Datenbank oder anderen Datenquellen, um Daten abzurufen, zu speichern oder zu aktualisieren.

Die Trennung der Applikationslogik von anderen Schichten einer Anwendung, wie der Benutzeroberfläche und der Datenbank, wird oft durch das Konzept der Schichtenarchitektur (Layered Architecture) unterstützt. Diese Trennung verbessert die Wartbarkeit, Erweiterbarkeit und Testbarkeit von Softwareanwendungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie würden Sie vorgehen, wenn Sie eine Stauplanungsapp entwickeln sollten?

A

SystematischerSoftware-Entwicklungsprozess

feste Schritte: Anforderungsanalyse → Systemspezifikation, Use Case und UML Klassendiagramm erstellen→ Implementierung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie ist der API Flow?

A

Nutzer (Client) sendet eine Anfrage (Request) an die Schnittstelle der Anwendung (API). Die API nimmt die Anfrage entgegen und überprüft sie gegebenenfalls. Der Backend-Code verarbeitet die Anfrage und gibt das Ergebnis an die API zurück. Die Antwort (Response) wird dann weiter zum Nutzer geleitet.

Beispiel: Ein Request lautet ‘Gib mir meine Profilseite’. Die Anfrage wird an den API-Endpunkt gesendet, der prüft, ob der Nutzer eingeloggt ist. Wenn ja, wird die Profilseite aus der Datenbank geladen und als Response an den Nutzer gesendet.

Es gibt verschiedene Arten von Anfragen (HTTP Requests), darunter GET (Daten abrufen), POST (Daten erstellen, z. B. bei einem Facebook-Post), PUT (Daten aktualisieren) und DELETE (Daten löschen)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist ein Endpunkt?

A

Ein Endpunkt (Endpoint) ist eine spezifische URL (Uniform Resource Locator) oder URI (Uniform Resource Identifier) in einer Webanwendung. Der Endpunkt definiert, wohin eine Anfrage gesendet werden soll und welcher Prozess oder Dienst diese Anfrage verarbeiten wird. In der Regel repräsentiert ein Endpunkt eine Ressource oder einen spezifischen Dienst in einem Web-API (Application Programming Interface) und kann unterschiedliche HTTP-Methoden wie GET, POST, PUT oder DELETE unterstützen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist eine abstrakte Klasse?

A

Von einer abstrakten Klasse werden niemals Exemplare (Instanzen) erzeugt; sie ist bewusst unvollständig und bildet somit die Basis für weitere Unterklassen, die Exemplare haben können. Abstrakte Klassen repräsentieren häufig einen Allgemeinbegriff, einen Oberbegriff für eine Menge konkrete Begriffe (z.B. Fahrzeug: Pkw, Flugzeug etc.). Eine abstrakte Klasse ist immer eine Oberklasse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist CORS?

A

Wenn ein Client, der von einem Server (Domain) ausgeliefert wurde, auf Daten von einem anderen Server zugreifen möchte und Anfragen dorthin macht (also an den anderen Server), dann nennt man dies Cross-Origin-Requests. Das CORS (Cross Origin Request Sharing). Der 2. Webserver kann sagen, dass dies gestattet werden soll durch eine Konfiguration eines Proxies in “package.json” auf “localhost:5000”. Somit werden alle Requests, die der Der-Server nicht beantworten kann, dahin weitergeleitet und man kommt so immer noch von der selben Domain.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie ist der ganze Web Client aufgebaut?

A

React App - über Business Objects -> Web Service API Abstraction (bilden beide den React Client) und über REST Interfaces entsteht der Zugriff auf das Backend -> Flask Server Web Service Endpunkt (Python Backend). Webservice = Flask Server (Backend)
Wie greife ich auf das Webservice (Backend) zu ? = Durch das Rest Interface
Die Api die wir im Frontend gecodet haben ist die Web Service -API Abstraction
Api Klasse als Singleton realisiert
Definiert die Web Service Urls
Abstrahiert Zugriff auf einzelne Backend Services
Gibt entsprechende Bos zurück statt Json
App muss sich nicht um die änderung der JSON Struktur kümmern
Was ist ein Singelton = Das heißt das ich genau eine Api gibt die global zur Verfügung gestellt wird

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind Namespaces?

A

Namespaces erlauben uns die Strukturierung von APIs. Alle
relevanten Operationen können unter einem Namespace z.B. dem Präfix /bank zusammen gefasst werden. Eine alternative bzw. ergänzende Nutzung von Namespace könnte etwa sein, unterschiedliche API-Versionen voneinander zu trennen, um etwa
Abwärtskompatibilität (vgl. Lehrveranstaltungen zu Software Engineering) zu gewährleisten. Dies ließe sich z.B. umsetzen durch /bank/v1, /bank/v2 usw.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist ein Promise?

A

Promises sind Objekte, die das Ergebnis einer asynchronen Aktion abfangen und es zurück geben, wenn die versprochenen Daten erfolgreich geladen wurden oder ein Fehler aufgetreten ist. Sie sind sozusagen Platzhalter für ein Versprechen, dass vielleicht erfüllt wird, vielleicht aber auch nicht.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist das Backend/ die Applikationsschicht?

A

Das ist indem sinne die Mitte des Systems, diese beschäftigt sich nicht mit der Präsentationsschicht und auch nicht mit der Speicherung von Informationen, sondern stellt all das dar was die Anwendung, indem sinne tatsächlich kann (Regeln, Algorithmen, Strukturen und die BOs). In dieser Mitte müssen Dienste bereitgestellt werden damit diese 2 Clients diese Aktionen durchführen können.
Wie stelle ich den diese Dienste Bereit (Service Layer)
Wir können hier halt über den Rest Ansatz, echte Webservices bereitstellen, die dann von diesen Clients konsumiert werden können.
Business Logic Layer
Die BLL greift dann auf diese Datenhaltungsschicht zu.
Ist ein Objektorientiertes Gebilde basierend auf Python im Service und BL Layer.
Database Layer
Hier befindet sich nicht nur die DB, sondern auch die Software zur Anbindung der Datenbank
Wir brauchen einen Mechanismus, der eine Abbildung zwischen der Objektorientierten Welt und der Tuple Welt einer Relationalen DB schafft = wird in den Mappern gemacht

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Oauth Protokollfluss. Wie läuft denn das Ganze ab ?

A
  1. Client fordert eine Autorisierung vom Resource Owner
  2. Client erhält eine Autorisierungsgenehmigung vom Ressource Owner
  3. Client fordert ein Access Token vom Authorization Server (API). Hierfür
    nutzt er die Autorisierungsgenehmigung vom Resource Owner (&
    Authentifizierung der eigenen Identität)
  4. Authorization Server (API) authentisiert den Client (permisson to ask) &
    prüft die Autorisierungsgenehmigung vom Resource Owner. Ist dies
    erfolgreich, stellt er einen Access Token aus
  5. Client fragt die geschützten Daten beim Resource Server (API) an. Zur
    Authentisierung benutzt er das Access Token
    6.Der Resource Server prüft das Access Token & stellt, wenn gültig, die
    gewünschten Daten zur Verfügung
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Was ist Flask-restx?

A

Flask-Restx ist eine Erweiterung zu Flask, auf der unser Service Layer basiert. Restx ermöglicht die Erstellung von serverseitigen Ressourcen, die über die Fetch API oder XML HTTP Requests abgerufen werden können. In der Main-Klasse wird dann eine Instanz von Flask erstellt. Restx bietet eine Klasse namens API, an die in der Main-Klasse Routen angehängt werden. Ähnlich wie bei Flask kann man in dieser API-Klasse eine URI angeben, unter der ein bestimmtes Programm aufgerufen werden kann. In der Main-Klasse existiert auch eine Resource-Klasse, die eine Basisklasse ist und grundlegende Funktionen enthält.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist ein JSON?

A

JSON (JavaScript Object Notation) ist ein Format zur Speicherung von Daten. Ursprünge liegen im JavaScript-Umfeld, jedoch heute können nahezu alle gängigen Programmiersprachen JSON verarbeiten (tlw. mit Hilfe von zusätzlichen Bibliotheken). Wird vor allem verwendet, um Daten zwischen verschiedenen Komponenten auszutauschen, z.B.: APIs, Datenexporte, Objekt-Serialisierung und -Deserialisierung („SerDe“). JSON ist schema-los (engl. schema-less) und daher vor allem im NoSQL-Umfeld sehr beliebt. Zudem ist JSON gut (für Menschen) lesbar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Warum bekommen wir im Frontend den JSONs vom Backend zurück?

A

Mit marshal_list_with(modul) also dieser Decorator stellt halt aus dem angefragten modul Lesbare Zeichen für das Frontend und das Frontend muss dies dann umwandeln.
Das Frontend macht dann aus den JSON -> Object
Oben in der Main wird aufgezeigt, wie die Attribute also die Daten für das Frontend vorbereitet werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Sessions und Cookies

A

Verstanden! Hier ist eine präzisere Beschreibung des Authentifizierungsprozesses zwischen dem React-Frontend und dem Flask-Backend mit Firebase:

  1. Client (React):
    • Der Client sendet eine Anfrage an Firebase Authentication, z. B. durch die Verwendung von Firebase Auth SDK-Funktionen.
    • Firebase sendet einen Authentifizierungs-Token zurück, der im Browser als Cookie oder im lokalen Speicher gespeichert wird.
  2. Token im Browser:
    • Der Token, der die Google User ID oder andere Benutzerinformationen enthält, wird im Browser gespeichert.
  3. Anfragen an das Backend (Flask):
    • Bei zukünftigen Anfragen an das Backend wird der Token als Teil des Anfrage-Headers mitgesendet.
  4. Backend-Überprüfung:
    • Das Flask-Backend empfängt die Anfrage und extrahiert den Token.
    • Das Backend überprüft die Gültigkeit des Tokens, indem es es an Firebase sendet, um sicherzustellen, dass es authentisch und nicht abgelaufen ist.
    • Die Firebase Admin SDK oder ähnliche Funktionen können hierbei helfen.
  5. Benutzeridentifikation:
    • Nach erfolgreicher Überprüfung verwendet das Backend die im Token enthaltenen Informationen (wie die Google User ID) zur Identifikation des Benutzers und zum Bereitstellen von geschützten Ressourcen oder Services.

Dieser Ablauf ermöglicht eine sichere Authentifizierung zwischen dem React-Frontend und dem Flask-Backend unter Verwendung von Firebase Authentication. Beachte, dass die genaue Implementierung je nach den Anforderungen deiner Anwendung variieren kann.

22
Q

Was ist Open ID Connect?

A

Open ID Connect ist die Authentifizierungsschicht, die auf dem Autorisierungsverfahren OAuth basiert. Open Id ist die Schicht obendrauf die auf Basis des OAuth es erlaubt, dass man diesen Single Sign On Mechanismus benutzen kann.
Autorisierung = Ist ob die Nutzer auf diese Daten Zugreifen dürfen. Authentifizierung = wird gecheckt wer der Nutzer überhaupt ist
Das heißt man authentifiziert sich und danach wird nach autorisiert auf welche Komponente man zugreifen darf.

23
Q

Was ist OAuth?

A

Ist der Name für zwei verschiedene offener Protokolle, die eine sichere API-Autorisierung für den Desktop ist, also letztendlich ist für Web-Applikationen gemacht. Ein Endbenutzer kann mit Hilfe dieses Protokolls einer Anwendung den Zugriff auf seine Daten erlauben, diese werden dann von diesem Authentifikation Provider bereitgestellt werden, ohne die Daten des Client preiszugeben. Was heißt das man meldet sich authentisiert sich einmal z.B mit Username und Passwort, alles Weitere geschieht dann auf Basis eines Tokens. Der Token ist ein temporärer Ausweis.

24
Q

Was passiert beim Login?

A

Der wird hier mit Firebase realisiert, sprich auf Google Infrastruktur und dahinter liegt ein Authentifizierungssystem namens OAuth beziehungsweise das Open ID das obendrauf liegt. Man einen Anbieter, über den man sich anmeldet, der gibt uns dann einen Token mit.

25
Q

Was sind Datenstrukturen?

A

Sind Technik, mit der Daten gespeichert und organisiert werden, damit diese dann einfach lesbar sind für uns und dem Computer. (Arrays, Objects und Trees).

26
Q

Was für eine Datenstruktur hat JSON?

A

In einer JSON können zwei Datenstrukturen geformt werden , Objects o. Arrays. Objects beinhalten Name Value Paare und in Arrays sind nur die Values übergeben.

27
Q

Was ist ein Hashcode?

A

Hashcode Wenn wir zum Beispiel einen Datensatz kreiert haben und diesen weitersenden wird ein Hash für genau diesen Datensatz generiert und wenn wir z.B noch weitere Datensätze kreieren und diese weiter versenden wird dieser einen anderen Hash haben als der erste. Dadurch bleibt es halt Unique da es den Hashcode nur einmal gibt. In Git benutzen die den SHA-1 dieser ist eine Zeichenkette die 40 Zahlen oder Buchstaben beinhaltet.

28
Q

Aus was besteht ein Comic (Object)?

A

Commit Message, Comitter, Commit Date, Autor, Author Date, Tree, Parents
Wenn wir z.B jetzt in App.js etwas ändern, verändert sich der Hash von der App.js, assets und der Root Tree

29
Q

Was ist eine Applikation?

A

Ist ein Programm, das zur Lösung von Aufgaben bzw. Benutzerproblemen verwendet wird.

30
Q

Was ist der Unterschied zwischen einer URL und URI?

A

Die URL wird verwendet, um auf Ressourcen oder Informationen zuzugreifen in der Ressourcenstandort oder die Adresse verwendet wird. Hier wird auch das Schema angezeigt wie z.B http.
Einer URI ist eine Methode, um Ressourcen zu identifizieren anhand ihres Standortes oder Namens. Bsp. In der Main und Api

31
Q

Was ist HTTP?

A

Protokoll (Hyper Text Transfer Protocol Secure) im Allgemeinen? Es ist für die Kommunikation zwischen dem Server und dem Client, das ist das Protokoll des Webs. Das heißt jedes Mal, wenn man z.B den Browser öffnet und eine Webpage öffnest du oder wenn wir irgendeinen Button klickst der einen Fetch-Request los sendet wird http verwendet. Allgemein
Der Client ist der Browser und der Client wäre zum Beispiel Youtube und geht nach dem Client/Server Model
Es ist ein Stateless Protokoll, das heißt das, wenn ich eine Request mache, dass diese Unabhängig von anderen Request ist. Bsp Münzwurf

32
Q

Was ist Rest?

A

REST (Representational State Transfer) ist ein weltweit standardisierter Ansatz für den Austausch von Daten – Restful APIs folgen diesem Ansatz. Sie sind standardisiert, skalierbar (können erweitert werden) und stateless (gleicher Input führt zum gleichen Output). Representational State Transfer (REST) bezeichnet ein Programmierparadigma für verteilte
Systeme
-> Sie stellt eine Klasse Ressource die methoden enthält sodass flask diese für die Routs
verwenden kann . Außerdem stellt sie die Marshelling funktion welche die Objekte umwandelt
sodass die Schichten sie dann auch verstehen können.
› Schwerpunkt Maschine-zu-Maschine Kommunikation
› REST kodiert keine Methodeninformation in den URI, da der URI Ort und Namen der Ressource
angibt, nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet
› Zustandslosigkeit: Jede REST-Nachricht enthält alle Informationen, die für den Server bzw. Client
notwendig sind, um die Nachricht zu verstehen
› Weder der Server noch die Anwendung soll Zustandsinformationen zwischen zwei Nachrichten
speichern
› Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand
zum
nächsten Zustand (state) einer Applikation verbildlichen
› Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand
repräsentieren
› Vorteil: Skalierbarkeit eines Webservices z.B. über Lastverteilung

33
Q

Was ist RestAPI?

A

REST steht für Representational State Transfer
Programmierschnittstelle, die sich an den Paradigmen und Verhalten des World Wide Web (WWW) orientiert
und einen Ansatz für die Kommunikation zwischen Client und Server in Netzwerken (M2M) beschreibt.
REST soll den Übergang von einem zum nächsten Zustand einer Applikation verbildlichen
Das Besondere ist dabei, dass nie Zustände zwischen zwei API-Calls gespeichert werden,
- Jede REST-Nachricht enthält alle Informationen, die für den Server bzw. den Client notwendig sind, um
diese zu verstehen
- Weder Server noch die Anwendung speichern Zustandsinformationen zwischen zwei Nachrichten
(Zustandslosigkeit)
- Programmierparadigma, der Adressierbarkeit, dass die http Requests auf bestimmte Ressourcen
angewendet werden
RestfulService
Programmierparadigma für verteilte Systeme
Schwerpunkt: M2M Kommunikation
- Keine Methodeninformationen in den URI, URI Ort und Name der Ressource angibt
- Nicht aber die Funktionalität, die der Web-Dienst zu der Ressource anbietet

34
Q

Was ist Restx?

A

Flask-RESTX ist eine Erweiterung für Flask, die Unterstützung für das schnelle Erstellen von REST-APIs
bietet. Flask-RESTX fördert Best Practices mit minimalem Setup. Wenn Sie mit Flask vertraut sind,
sollte Flask-RESTX leicht zu erlernen sein. Es bietet eine kohärente Sammlung von Dekoratoren und
Werkzeugen, um Ihre API zu beschreiben und ihre Dokumentation richtig bereitzustellen (mit
Swagger).

35
Q

Wie ermöglicht Rest die Anfragen?

A

REST (Representational State Transfer) ist ein Architekturstil, der oft für die Entwicklung von Webdiensten verwendet wird. REST nutzt HTTP-Methoden, um Aktionen auf Ressourcen auszuführen. Hier sind einige wichtige Punkte:

  1. HTTP-Methoden: REST basiert auf den standardmäßigen HTTP-Methoden wie GET, POST, PUT, DELETE. Jede dieser Methoden entspricht einer bestimmten Aktion auf der Ressource.
  2. Ressourcen: In REST werden Daten als Ressourcen dargestellt, die durch eindeutige URIs (Uniform Resource Identifiers) identifiziert werden. Zum Beispiel kann eine Ressource durch die URL “https://example.com/products/123” repräsentiert werden.
  3. Zustandslosigkeit: RESTful-Services sind zustandslos, was bedeutet, dass jede Anfrage vom Client alle erforderlichen Informationen enthalten sollte. Der Server speichert keinen Zustand über den Client zwischen Anfragen.
  4. Statuscodes: HTTP-Statuscodes geben an, ob eine Anfrage erfolgreich war, Fehler aufgetreten sind oder weitere Aktionen erforderlich sind. Beispielsweise steht der Statuscode 200 OK für eine erfolgreiche Anfrage.
  5. Repräsentationen: Ressourcen können in verschiedenen Formaten repräsentiert werden, wie z.B. JSON oder XML. Die Anfragen und Antworten enthalten diese Repräsentationen.

Durch die Nutzung von HTTP-Methoden, Ressourcenidentifikation über URIs, Zustandslosigkeit und Statuscodes ermöglicht REST die Kommunikation und den Datenaustausch zwischen Client und Server über das HTTP-Protokoll.

36
Q

Was ist ein Cookie?

A

Cookie ist eine Textinformation (Datei), die im Browser auf dem Endgerät des Betrachters jeweils zu einer besuchten
Website gespeichert werden kann.
–> wird dafür genutzt das man beim nächsten login bereits gespeichert ist.
unser Token in der Authentifizierung wird als cookie gespeichert. Textinformation die zu einer besuchten Webseite gespeichert wird
->im Browser von JS erzeugt oder vom Webserver erhalten
->Identifizieren des Users, Abspeichern eines Logins/Warenkorbs
->Datenentnahme und Speicherung als string
-bei erneutem Besuch einer Webseite sendet Browser die Cookies

37
Q

Was ist Git und Github?

A

Git ist ein verteiltes Versionskontrollsystem. Es ermöglicht Entwicklern, die Geschichte ihrer Codebasis zu verfolgen, Änderungen zu verwalten, verschiedene Versionen zu erstellen und effektiv in Teams zusammenzuarbeiten. Git speichert diese Informationen in einem Repository, das lokal auf den Computern der Entwickler existieren kann.

GitHub hingegen ist eine Plattform, die auf Git basiert und als Hosting-Service für Git-Repositorien dient. Entwickler können ihre Git-Repositorien auf GitHub hochladen und verwalten. Es bietet Funktionen wie Pull Requests, Probleme verfolgen, Wikis und mehr, die die Zusammenarbeit zwischen Entwicklern erleichtern. GitHub wird oft in der Open-Source-Community verwendet, um Projekte zu teilen und zu kollaborieren.

In Zusammenfassung ist Git das Versionskontrollsystem selbst, während GitHub eine Webplattform ist, die auf Git basiert und Funktionen für die Zusammenarbeit und das Hosting von Git-Repositorien bereitstellt. Es gibt auch andere Plattformen wie GitLab und Bitbucket, die ähnliche Funktionen bieten.

38
Q

Was ist HTTP/HTTPS?

A

= Hypertext Transfer Protocol Secure
- Kommunikationsprotokoll im World Wide Web,
- Client und Server mittels APIs kommunizieren können und Daten übertragen werden
Übliche Websites verwenden lediglich das HTTP-Verfahren.
Wenn es jedoch um persönliche Daten geht, wie beim Online-Banking oder in Online-Shops, verfügen diese
über eine HTTPS-Verschlüsselung.
-> Mittlerweile sind alle seiten mit https

HTTP (Hypertext Transfer Protocol) und HTTPS (Hypertext Transfer Protocol Secure) sind Protokolle, die für die Übertragung von Daten zwischen einem Webbrowser und einem Webserver verwendet werden.

  • HTTP (Hypertext Transfer Protocol): Dies ist das Standardprotokoll für die Übertragung von Informationen im Web. Es erfolgt unverschlüsselt, was bedeutet, dass die übermittelten Daten in Klartext lesbar sind. Dies ist in Ordnung für viele normale Webseiten, aber es birgt Sicherheitsrisiken, insbesondere wenn es um die Übertragung sensibler Informationen wie Benutzernamen, Passwörter oder Kreditkarteninformationen geht.
  • HTTPS (Hypertext Transfer Protocol Secure): HTTPS ist eine sichere Variante von HTTP. Hierbei werden die Daten zwischen dem Browser und dem Server verschlüsselt, was die Vertraulichkeit und Sicherheit der übertragenen Informationen gewährleistet. Dies wird durch SSL (Secure Sockets Layer) oder seinen Nachfolger, TLS (Transport Layer Security), ermöglicht. Websites, die HTTPS verwenden, sind durch ein Schlosssymbol in der Adressleiste des Browsers gekennzeichnet, was darauf hinweist, dass die Verbindung sicher ist.

In der heutigen Zeit wird die Verwendung von HTTPS, besonders bei Websites, auf denen persönliche Informationen eingegeben werden, dringend empfohlen, um die Sicherheit und Privatsphäre der Benutzer zu gewährleisten.

39
Q

Was ist ein Decorator?

A

Ein Decorator in Python ist eine Funktion, die eine andere Funktion oder Methode modifiziert. Es wird durch das ‘@’ Symbol vor der Funktion definiert und wird direkt vor der Funktionsdefinition platziert. Ein Decorator ermöglicht es, das Verhalten einer Funktion zu erweitern, zu ändern oder etwas hinzuzufügen, ohne den eigentlichen Funktionscode zu ändern.

Ein Decorator wird aufgerufen, wenn die dekorierte Funktion definiert oder aufgerufen wird. Es wird vor dem Ausführen des Funktionscodes ausgeführt und kann zusätzlichen Code hinzufügen, den Rückgabewert verändern oder die Funktion ersetzen.

Hier ist ein einfaches Beispiel:

```python
def my_decorator(func):
def wrapper():
print(“Something is happening before the function is called.”)
func()
print(“Something is happening after the function is called.”)
return wrapper

@my_decorator
def say_hello():
print(“Hello!”)

say_hello()
~~~

In diesem Beispiel wird die Funktion say_hello mit dem Decorator my_decorator dekoriert. Wenn say_hello() aufgerufen wird, wird der Code in my_decorator vor und nach der Ausführung der ursprünglichen say_hello-Funktion ausgeführt. Decorators sind nützlich für wiederkehrende Aufgaben wie Protokollierung, Authentifizierung oder Leistungsüberwachung.

40
Q

Was ist die Service Layer?

A

Service-Schicht (Service Layer) -> im Projekt Main auf Flask mithilfe der Flask-Framework-Erweiterung Restx (stellt Ressourcen bereit) und API Klassen. Service Layer ruft Algorithmen und Methoden des Business Layers auf, um Anfragen der
Präsentationsschicht zu verarbeiten. Diese Schicht enthält die Geschäftslogik und stellt Services bereit, die von der Präsentationsschicht aufgerufen werden. Sie verarbeitet Anfragen, führt Geschäftsregeln aus und koordiniert die Interaktion zwischen der Präsentationsschicht und der Geschäftslogikschicht.

41
Q

Was ist die Business Logic Layer?

A

Geschäftslogikschicht (Business Logic Layer) -> bei uns Administration & Business Objects: Hier befindet sich die eigentliche Geschäftslogik der Anwendung. Diese Schicht enthält die Regeln und Prozesse, die für die Verarbeitung von Daten und die Ausführung von Geschäftsfunktionen erforderlich sind.

42
Q

Was ist ein Framework?

A

stellt Tools und Vorgaben zur Verfügung, bestimmt Architektur einer Anwendung -> bietet Entwicklern eine strukturierte Methode zur Erstellung von Anwendungen wie z.b. Flask.

43
Q

Was ist eine Library/Bibliothek?

A

Stellt Sammlung von Funktionen und Methoden -> stehen Entwicklern
zur Verfügung, schreibt keine Strukturen oder Regeln vor, keine vorgegebene Architektur, soll lediglich Aufgaben in Anwendungen vereinfachen.

44
Q

Was ist UML?

A

Die UML (Unified Modeling Language) ist eine Sprache und Notation zur Spezifikation, Konstruktion, Visualisierung und Dokumentation von Modellen für Softwaresysteme. Die UML berücksichtigt die gestiegenen Anforderungen bezüglich der Komplexität heutiger Systeme, deckt ein breites Spektrum von Anwendungsgebieten ab und eignet sich für konkurrierende, verteilte, zeitkritische, sozial eingebettete Systeme.1
Die Unified Modelling Language wurde von der Object Management Group als Modellierungssprache für Software entwickelt. UML ist eine standardisierte Sprache und umfasst 13 Diagrammarten, die nach Verhaltens- und Strukturdiagramen unterschieden werden.2
Die UML ist eine graphische Sprache zur Visualisierung, Spezifikation, Konstruktion und Dokumentation von Softwaresystemen

45
Q

Was ist ein Use Case?

A

Eine Reihe von Interaktionen zwischen einem Akteur (oder mehreren Akteuren) und einem System, welche von einem spezifischen Akteur ausgelöst wurde.
Use Cases können sowohl textuell als auch grafisch (Use Case Diagramm) beschrieben werden.
Use Cases ……
è werden durch ein Ereignis angestoßen, das der Hauptakteur auslöst
è sind stets zielorientiert, d.h. der Hauptakteur bezweckt damit etwas
è beschreiben sämtliche Interaktionen zwischen dem System und seiner Umwelt
è enden, wenn ein Ziel entweder erreicht ist oder es deutlich wurde, dass das Ziel nicht
erreichbar ist.
è beschreiben stets die Interaktionen von außen, d.h. es wird zwar ersichtlich was das
System leisten soll, aber nicht wie es funktioniert.4

46
Q

Was ist ein Akteur in einem UC Diagramm?

A

Ein Akteur ist die Rolle eines Benutzers oder eines externen Systems gegenüber dem betrachteten System. Beide stehen aus Sicht des Systems extern.

47
Q

Was ist ein Anwendungsfall?

A

Ein Anwendungsfalldiagramm zeigt Akteure, Anwendungsfälle und die Beziehungen zwischen diesen Elementen. Ein Anwendungsfalldiagramm beschreibt die Zusammenhänge zwischen einer Menge von Anwendungsfälle und den daran beteiligten Akteuren. Es bildet somit den Kontext und eine Gliederung für die Beschreibung, wie mit einem Geschäftsvorfall umgegangen wird. Zu beachten ist, dass Anwendungsfalldiagramm selbst kein Verhalten und keine Abläufe beschreiben, sondern nur die Zusammenhänge der an Anwendungsfällen beteiligten Modellelemente zeigen und ein Hilfsmittel zur Anforderungsermittlungen und - verwaltung sind.
Ein UC Diagramm ist die grafische Darstellung für die Anwendungsfälle, die Akteure und deren Beziehungen

48
Q

Was ist eine Applikation?

A

Eine Applikation, auch als Anwendungssoftware, Anwendungsprogramm oder kurz Anwendung bezeichnet, ist ein Computerprogramm, das dazu dient, nützliche oder gewünschte Funktionalitäten zu bearbeiten oder zu unterstützen. Sie stellt eine Lösung für Benutzerprobleme oder -aufgaben dar und ermöglicht Funktionen wie Tabellenkalkulation, Bildbearbeitung, Spiele usw., die über den Umfang der Systemsoftware wie dem Betriebssystem hinausgehen.

49
Q

Welche Art von Applikationen haben wir umgesetzt?

A

Webapplikation: Eine Webanwendung (auch Online-Anwendung, Webapplikation oder kurz Web-
App) ist ein Anwendungsprogramm nach dem Client-Server-Modell. Anders als klassische
Desktopanwendungen werden Webanwendungen nicht lokal auf dem Rechner des Benutzers
installiert. … Genutzt wird eine Webanwendung dabei zumeist über einen Webbrowser.

50
Q

Was ist Invariante, Postcondition und Precondition?

A
  • Invariante: Immer wahre Bedingung in einem bestimmten Kontext, z. B. das Alter einer Person ist immer positiv.
  • Postcondition (Nachbedingung): Bedingung, die nach Ausführung einer Operation gelten muss, z. B. das Ergebnis einer Addition ist größer als null.
  • Precondition (Vorbedingung): Bedingung, die vor dem Aufruf einer Operation erfüllt sein muss, z. B. ein Parameter einer Funktion darf nicht null sein.
51
Q

Was ist OCL?

A

OCL (Object Constraint Language) ist eine formale Sprache, um Bedingungen und Regeln in Softwaremodellen zu definieren, besonders in der UML-Modellierung. Sie ermöglicht präzise Spezifikationen von Einschränkungen, wie Invarianten (immer wahre Bedingungen), Postconditions (Bedingungen nach einer Operation) und Preconditions (Bedingungen vor einer Operation).

52
Q

Was ist eine Klasse?

A

Eine Klasse ist die Definition der Attribute, Operationen und Semantik für eine Menge von Objekten. Alle Objekte einer Klasse entsprechen dieser Definition. Eine Klasse enthält die Beschreibung der Struktur und des Verhaltens von Objekten, die sie erzeugt oder die mit ihr erzeugt werden können. Objekte werden von Klassen produziert und sind die in einer Anwendung zur Programmlaufzeit agierenden Einheiten. Die Definition einer Klasse setzt sich aus Attributen und Operationen zusammen. Das Verhalten eines Objektes wird durch die möglichen Nachrichten beschrieben, die es verstehen kann. Zu jeder Nachricht benötigt das Objekt entsprechende Operationen.