Wiki source code of Basisprojekt

Version 38.2 by mgrawunder on 2025/09/03 10:18

Show last authors
1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
3 Hier folgen Erklärungen des neuen Basisprojekts. Es wird um die folgenden Themen gehen:
4
5 {{toc/}}
6
7
8 = Basisprojekt mit IntelliJ einrichten =
9
10 [[image:1755245956916-184.png]]
11
12 == Clone ==
13
14 [[image:1755245971657-468.png]]
15
16
17 [[image:1755245980026-164.png]]
18
19 Auf anderen Branch wechseln (hier development)
20
21 [[image:1755245996886-733.png]]
22
23 == Initialer Build (Generierung) ==
24
25 [[image:1755246008466-477.png]]
26
27
28 [[image:1755246018789-616.png]]
29
30
31 == Lombok Plugin ==
32
33 **Lombok Plugin installiert? Wenn nein jetzt machen**
34
35 [[image:1755248508652-523.png]]
36
37 **Hinweis: Wenn man schon hier ist, kann man auch das Spring-(Boot)-Plugin **installieren
38
39 [[image:1756886220468-891.png]]
40
41 == Server laufen lassen ==
42
43 [[image:1755246035428-328.png]]
44
45
46 ... und ggf. Lombok aktivieren (Man wird nach dem Start der Anwendung gefragt)
47
48 [[image:1755246072443-191.png]]
49
50
51 [[image:1755246118807-452.png]]
52
53
54 == Logging umstellen ==
55
56 [[image:1755246135109-325.png]]
57
58
59 [[image:1755246147827-679.png]]
60
61
62 [[image:1755246162330-595.png]]
63
64 == Development Profil aktivieren ==
65
66 damit dann user1 - user9 angelegt werden und man nicht jedesmal neu registrieren muss
67
68 [[image:1755246173415-934.png]]
69
70
71 **Wenn man IntelliJ nicht in der Pro-Version verwendet bzw. das Spring Boot Plugin nicht installiert hat, muss kann man ein Spring-Profil über eine Umgebungsvariable in der Konfiguration des Servers setzen: **
72
73 **SPRING_PROFILES_ACTIVE=dev**
74
75 [[image:1755248752596-839.png]]
76
77
78 == Client starten ==
79
80 [[image:1755246257400-525.png]]
81
82
83 [[image:1755246212916-883.png]]
84
85
86 [[image:1755246223246-834.png]]
87
88
89 === Mehrere Instanzen des Clients ermöglichen ===
90
91 [[image:1755246233218-893.png]]
92
93
94 Wenn folgendes kommt, ist entweder das "dev" Profil nicht aktiviert, der Nutzer wurde nicht angelegt. Wenn der Server nicht läuft, gibt es eine andere Fehlermeldung.
95
96 [[image:1755246292057-581.png]]
97
98
99 = Kurzer Blick ins Basisprojekt =
100
101 [[image:1755249096987-249.png]]
102
103
104 [[image:1755249136156-419.png]]
105
106
107 == Screenshots ==
108
109 [[image:1755249228556-469.png]]
110
111
112 = Kommunikation Client ~-~-> Server =
113
114 [[image:1755249285866-367.png]]
115
116 Der Server verwendet das REST-Protokoll und als Austauschformat JSON
117
118 = OpenAPI =
119
120 (Hinweis: Ich bin nicht sicher, ob IntelliJ diese Darstellung auch hat, wenn man nicht die Ultimate Version verwendet. Ggf. muss man das OpenAPI-Plugin installieren)
121
122 [[image:1755250026156-269.png]]
123
124 [[image:1755250050031-304.png]]
125
126 * **Paths**: Endpunkte der API (z.B. /users, /lobbies).
127 * **Operations**: Spezifikation von Methoden wie GET, POST.
128 * **Definitions**: Detaillierte Beschreibung von Eingabe- und Ausgabestrukturen.
129 * **Security**: Authentifizierungsmechanismen.
130
131 [[image:1755250061990-172.png]]
132
133 Kann JSON oder YAML (Yet Another Markup Language) verwenden YAML ist wie JSON nur mit weniger Klammern
134
135 [[image:1755250157536-746.png]]
136
137 Die aktuelle Version des OpenAPI Dokumentes findet sich im Basisprojekt 2 [[https:~~/~~/gitlab.swl.informatik.uni-oldenburg.de/SPB/SWPBasisprojekt2/-/blob/master/openapi.yaml?ref_type=heads>>https://gitlab.swl.informatik.uni-oldenburg.de/SPB/SWPBasisprojekt2/-/blob/master/openapi.yaml?ref_type=heads]]
138
139 Dort wird die Datei auch grafisch dargestellt.
140
141
142 = Maven und OpenAPI =
143
144 Die OpenAPI Datei kann verwendet werden, um sich die [[REST-Schnittstellen>>doc:||anchor="HErweiterungderREST-Schnittstelle"]] generieren  zu lassen. Diese Erzeugung erfolgt mit dem OpenAPI Generator [[https:~~/~~/github.com/OpenAPITools/openapi-generator>>https://github.com/OpenAPITools/openapi-generator]]
145
146 Man kann dabei jetzt einen Kommandozeilenaufruf verwenden oder man setzt auf das im Basisprojekt vorhandene MVN ()
147
148 Dafür ist in den Maven-Dateien bereits das OpenAPI Generator Plugin integriert. Da im Client und im Server unterschiedliche Arten verwendet werden, erfolgt die Konfiguration im Client und im Server unterschiedlich:
149
150 == Client ==
151
152 Im Client werden die Apache Http Bibliothek verwendet.
153
154
155 [[image:1756887005209-855.png]]
156
157 == Server ==
158
159 Im Server wird Spring (Boot) verwendet
160
161 [[image:1756887037619-847.png]]
162
163 TODO: Weitere Informationen zu
164
165 - Lombok
166
167 - Dependency Injection
168
169 - Spring (Boot), siehe auch [[https:~~/~~/www.marcobehler.com/guides/spring-framework>>https://www.marcobehler.com/guides/spring-framework]]
170
171
172
173 = Erweiterung der REST-Schnittstelle =
174
175 In diesem Beispiel wird einmal gezeigt, wie die REST-Schnittstelle des Basisprojektes einfach erweitert werden kann.
176
177 In diesem Beispiel soll die aktuelle Schnittstelle um die Möglichkeit erweitert werden, alle Lobbies vom Server zu bekommen.
178
179 == Schritt 1: Erweitere das OpenAPI-Dokument ==
180
181 Um diese neue Funktion sowohl im Client als auch im Server verwenden zu können, ist es notwendig, diese neue Funktion im OpenAPI-Dokument zu definieren.
182
183 Die Funktion soll sehr einfach sein und keine Parameter verlangen. Dafür bietet sich die GET-Funktion an.
184
185 Im folgenden Bild sind alle Anpassungen zu sehen:
186
187 [[image:1756887436525-790.png||height="355" width="974"]]
188
189
190 Nach dem Speichern, sollte das OpenAPI-Dokument wie folgt aussehen
191
192 [[image:1756887488020-376.png||height="642" width="904"]]
193
194
195
196