Ich arbeite an der Entwicklung von RESTful Service auf Java mit Spring Framework. Wenn in meiner Dienstebene eine Ausnahme auftritt, werfe ich eine Ausnahme aus, die an den HTTP-Statuscode gebunden ist. Wenn beispielsweise die Authentifizierung des Benutzers fehlschlägt, sende ich eine Antwort mit dem Statuscode 401.Wie kann ich benutzerdefinierte Antwortphrase mit Spring-Framework festlegen?
return new ResponseEntity<>(HttpStatus.valueOf(statusCode));
Ich mag RESTful Service Verbraucher erklären, was mit seiner Bitte nicht nur den Code zu senden falsch ist, sondern auch textliche Erklärung. Ich kann dies entweder tun, indem ich eine benutzerdefinierte Nachricht zum Antworthauptteil hinzufüge, oder indem ich die Standardantwortphrase ersetze. Zum Beispiel ersetzen Sie Unauthorized
für 401
durch User does not exist
oder Incorrect password
.
Das Problem ist HttpStatus
von org.springframework.http
ist enum und Fehlercodes sind an textliche Antwort Phrasen gebunden.
Kann ich diese Antwortphrasen irgendwie überschreiben oder brauche ich einen anderen Ansatz?
Und ist es gute Praxis, Standardantwortausdruck zu ersetzen, oder es wäre besser, Erklärungsnachricht zu Antwortkörper zu setzen?
Ich habe versucht, 'HttpServletResponse' zu verwenden, gibt es' setStatus (int sc, String sm) 'Methode, aber leider funktioniert es nicht wie ich es erwarte und es ist auch veraltet. Wenn ich versuche, es zu verwenden, ändert es die Standardantwortphrase für vorhandenen Code nicht und fügt meinem benutzerdefinierten Code keine Nachricht hinzu, zB 488. Es wird empfohlen, 'sendError (int sc, String msg)' zu verwenden, aber auch ändert die Antwortphrase nicht. Es fügt nur spezifizierte Nachricht Servlet Container Standard-HTML-Fehler Seite :( – Derp