Drei Schichten Architektur
- Einteilung des Prozesses in 3 Schichten
- Frontend
- Backend
- Datenbank
Server-Side vs Client-Side Rendering
| SSR | CSR |
|---|---|
| Server führt Berechnungen durch | Client führt Anfrage an Server aus |
| Server führt Backend Abfragen aus | Server sendet JS Code |
| Server generiert fertigem HTML Code und sendet diesen an Client | Client nutzt JS Code um HTML Code zu generieren |
| Client führ durch JS Code alle Berechnungen und Abfragen aus | |
Spring, JPA, Contoller-Mappings etc
Spring
- Container für Dependency Injection
- auf MVC (Model-View-Controller) basierendes Web-Framework
- Event-basiertes Messaging System
- Ökosystem von Modulen und Frameworks
- Spring Boot: vor-konfigurierte Spring Module für Entwicklung von Webservices
JPA
- “Jakarta Persistence API”
- Konzept was beschreibt wie Daten über die Lebensdauer des Java Programms hinaus leben können
- Regeln für Speichern werden in Java-Code gesetzt
- Nutzt ORM Layer für Konvertierung von Java-Objekten in relationale Objekte
- “generiert SQL-Code, sodass Java-Objekte automatisch in eine Datenbank gespeichert und wieder herausgeholt werden können”
Controller Mapping
- definiert Pfad zu dem Abfragen geschickt werden können
- beinhaltet Pfad- und Query Parameter, sowie Return Wert usw.
REST und JSON
REST
- Konzept zur Erstellung einer API, “representational state transfer” 2000 von Dr. Roy Fielding
- Konzepte
- Einheitliche Benutzerschnittstelle
- Entkopplung von Client und Server
- Statusunabhängigkeit
- Zwischenspeicherfähigkeit
- Mehrschichtige Systemarchitektur
- Code auf Abruf (optional)
JSON
- “JavaScript Object Notation”
- einheitliches Datenformat für Datenaustausch zwischen Anwendungen
- Name-Value-Pairs umschlossen von
{}
Pfad-Parameter und Query-Parameter
Pfad Parameter
- Teil der URL
- genutzt um auf spezifische Ressourcen zu zeigen
- mit
{parameter}in URL deklariert
Query Parameter
- Teil der URL
- beginnen hinter
?am ender der URL - untereinander getrennt durch
& - Als Map in URL genutzt
domain.com/endpoint?username=name
HTTP-Methoden und HTTP-Error-Codes
| HTTP Methode | |
|---|---|
| GET | Daten abfragen |
| POST | Daten anlegen |
| DELETE | Daten löschen |
| PUT | Alle Daten die zutreffen mit der neuen ersetzen |
| PATCH | Die eine Information verändern |
| HTTP Code | |
|---|---|
| 200 | OK |
| 201 | Created |
| 301 | Moved Permanently |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 405 | Method not Allowed |
| 500 | Internal Server Error |
| 502 | Bag Gateway |
| 504 | Gateway Timeout |
CSS und HTML
HTML
- “Hypertext Markup Language”
- textbasierte Auszeichnungssprache zur Darstellung von strukturierten elektronischen Dokumenten
- Werden durch Webbrowser angezeigt
- Grundlage für WorldWideWeb
CSS
- “Cascading Style Sheets”
- Stylesheet Sprache
- Zur Veränderung der Darstellung von HTML- oder XML-Elementen
Security, Authentication, Umgebungsvariablen
Umgebungsvariablen
- stehen Programm dynamisch bei Laufzeit zur Verfügung
- werden aus
.env-Datei oder aus System gelesen
Authentication
- Als Benutzer ausweisen
- Login mit Username und Passwort
- Einschränken der Berechtigung von Nutzern
- Am besten in Front- und Backend
- LDAP “Lightweight Directory Access Protocol”
Security
- Keine Production Passwörter in Klartext in Repo Speichern
- CORS richtig setzen
JavaScript und Vue.Js
JavaScript
- meist interpretierte Sprache mit dynamischen Typsystem
- in jedem Browser verfügbar
- Node.js ist JavaScript Runtime die unabhängig von Browser sein kann
- npm ist ein JavaScript-Paketmanager
Vue.Js
- JavaScript Framework zur einfachen Erstellung von Seiten mit dynamischen Inhalten
- ist eine “progressive Framework”, kann als Bibliothek genutzt werden nur einzelne Funktionen davon
- Über Router werden durch Anfragen verschiedene Seiten geladen
- Komponente werden in .vue-Dateien geschrieben
- Komponente werden in Views zu Seiten kombiniert
Build, Deployment und Continuous Delivery
- Continuous Delivery
- Prinzipien
- Versionsverwaltung nutzen, Team-übergreifendes Paket-Repository
- Automatisiere alle Deployments und Tests über Pipelines
- Halte gesamte Software ständig in Release-fähigen Zustand, so dass Release zur Business-Entscheidung wird.
- Prinzipien