### fix: 33 verbessere API-Antwort-Handling und Versionsmarker
- **NennungRemoteRepository:** Handling für leeren JSON-Body angepasst. - **MailController:** JSON-Antwort mit Erfolgsstatus und ID hinzugefügt. - **WebMainScreen:** Versionsmarker auf `v2026-04-23.33 - JSON RESPONSE FIX` aktualisiert.
This commit is contained in:
+7
-1
@@ -49,7 +49,7 @@ class MailController(
|
|||||||
private lateinit var baseMailAddress: String
|
private lateinit var baseMailAddress: String
|
||||||
|
|
||||||
@PostMapping("/nennung")
|
@PostMapping("/nennung")
|
||||||
fun receiveNennung(@Valid @RequestBody request: NennungRequest) {
|
fun receiveNennung(@Valid @RequestBody request: NennungRequest): Map<String, Any> {
|
||||||
logger.info("Nennung via API erhalten: ${request.vorname} ${request.nachname} für Turnier ${request.turnierNr}")
|
logger.info("Nennung via API erhalten: ${request.vorname} ${request.nachname} für Turnier ${request.turnierNr}")
|
||||||
|
|
||||||
val entity = NennungEntity(
|
val entity = NennungEntity(
|
||||||
@@ -130,6 +130,12 @@ class MailController(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
logger.error("KRITISCH: Fehler beim Senden der Bestätigungs-Mail an ${request.email}: ${e.message}", e)
|
logger.error("KRITISCH: Fehler beim Senden der Bestätigungs-Mail an ${request.email}: ${e.message}", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return mapOf(
|
||||||
|
"success" to true,
|
||||||
|
"message" to "Nennung erhalten und verarbeitet",
|
||||||
|
"id" to entity.id.toString()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/nennungen")
|
@GetMapping("/nennungen")
|
||||||
|
|||||||
@@ -122,3 +122,9 @@ Die "Hallo Du!" Test-UI wurde durch produktive, fachlich korrekte Formulare erse
|
|||||||
- Erweiterung des Loggings im `NennungRemoteRepository`, um API-Antworten (Status & Body) in der Konsole zu sehen.
|
- Erweiterung des Loggings im `NennungRemoteRepository`, um API-Antworten (Status & Body) in der Konsole zu sehen.
|
||||||
- Erhöhung der Diagnose-Transparenz im Caddy-Proxy (v32).
|
- Erhöhung der Diagnose-Transparenz im Caddy-Proxy (v32).
|
||||||
- Ziel: Identifikation, warum Requests im Same-Origin Modus scheinbar still scheitern.
|
- Ziel: Identifikation, warum Requests im Same-Origin Modus scheinbar still scheitern.
|
||||||
|
|
||||||
|
### v2026-04-23.33 - JSON RESPONSE FIX
|
||||||
|
- **Analyse**: Version 32 zeigte, dass der Server mit `200 OK`, aber einem leeren Body antwortet. Das Frontend (KMP/Wasm) wartete jedoch auf eine JSON-Antwort, was zum "Hängen" im Ladezustand führte.
|
||||||
|
- **Backend-Fix**: `MailController.kt` gibt nun explizit ein JSON-Objekt `{"success": true, ...}` zurück.
|
||||||
|
- **Frontend-Härtung**: `NennungRemoteRepository.kt` wurde robuster gegenüber leeren Antwort-Bodies gestaltet.
|
||||||
|
- **Status**: Versionsmarker v33.
|
||||||
|
|||||||
+2
-2
@@ -101,8 +101,8 @@ class NennungRemoteRepository(private val client: HttpClient) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
println("Antwort erhalten: ${response.status.value}")
|
println("Antwort erhalten: ${response.status.value}")
|
||||||
val responseText = try { response.body<String>() } catch (e: Exception) { "Kein Body" }
|
val responseText = try { response.body<String>() } catch (e: Exception) { "" }
|
||||||
println("Antwort Body: $responseText")
|
println("Antwort Body: '$responseText'")
|
||||||
|
|
||||||
if (response.status.isSuccess()) {
|
if (response.status.isSuccess()) {
|
||||||
Result.success(Unit)
|
Result.success(Unit)
|
||||||
|
|||||||
+1
-1
@@ -126,7 +126,7 @@ fun MainAppContent() {
|
|||||||
// Dezentraler Versions-Marker in der unteren rechten Ecke
|
// Dezentraler Versions-Marker in der unteren rechten Ecke
|
||||||
Box(modifier = Modifier.fillMaxSize().padding(8.dp), contentAlignment = Alignment.BottomEnd) {
|
Box(modifier = Modifier.fillMaxSize().padding(8.dp), contentAlignment = Alignment.BottomEnd) {
|
||||||
Text(
|
Text(
|
||||||
text = "v2026-04-23.32 - PROXY DEBUG",
|
text = "v2026-04-23.33 - JSON RESPONSE FIX",
|
||||||
style = MaterialTheme.typography.labelSmall,
|
style = MaterialTheme.typography.labelSmall,
|
||||||
color = Color.LightGray.copy(alpha = 0.5f)
|
color = Color.LightGray.copy(alpha = 0.5f)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user