Z moją bardzo prostą usługą JAX-RS używam Tomcat z dziedziną JDBC do uwierzytelniania, dlatego używam adnotacji JSR 250.Niestandardowa odpowiedź o statusie HTTP za pomocą JAX-RS (Jersey) i @RolesAllowed
Chodzi o to, że chcę zwrócić niestandardową treść wiadomości w odpowiedzi na stan HTTP. Kod statusu (403) powinien pozostać taki sam. Na przykład, mój serwis wygląda następująco:
@RolesAllowed({ "ADMIN" })
@Path("/users")
public class UsersService {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public String getUsers() {
// get users ...
return ...;
}
}
Jeśli użytkownik z innej roli niż „admin” dostęp do usługi, chcę zmienić komunikat odpowiedzi na coś takiego (w zależności od typu nośnika [ xml/json]):
<error id="100">
<message>Not allowed.</message>
</error>
Obecnie Jersey powraca następujące ciała:
HTTP Status 403 - Forbidden
type Status report
message Forbidden
description Access to the specified resource (Forbidden) has been forbidden.
Apache Tomcat/7.0.12
Jak mogę zmienić domyślną treść wiadomości? Czy istnieje sposób obsłużenia wyjątku (może być zgłoszony) do zbudowania mojej własnej odpowiedzi na stan HTTP?
Kompletny przykład: https://www.bhaveshthaker.com/25/customize-handling-server-side-exceptions-with-error-codes-using-exceptionmapper-with-jersey-jax-rs-in-java/ – RAS