spring-boot - starter - whitelabel error page 404 spring boot
Jersey devuelve 404 con cualquier código de estado de error? (2)
También tuve este problema y lo resolví excluyendo ErrorMvcAutoConfiguration de la configuración automática del arranque de resorte:
@EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class })
Tengo este punto final inútil en la ruta "/ prueba":
@PUT
public Response doSomething() {
return Response.status(409).build();
}
y lo pruebo de esta manera:
@Test
public void uselessTest() {
put("/test").then().assertThat().statusCode(409);
}
Pero obtengo un error de aserción:
El código de estado esperado <409> no coincide con el código de estado real <404>.
Esto ocurre en más códigos: 400, 500 ... además de 200.
Estoy usando Spring Boot. Si pongo un punto de interrupción en mi método de punto final cuando ejecuto la prueba, la ejecución se detiene allí, por lo que la solicitud en la prueba se realiza correctamente. Si cambio el código de estado (en recursos y en la prueba, también) a 200, pase la prueba.
¿Que esta pasando?
El comportamiento predeterminado con Jersey, cuando hay un estado de error (4xx, 5xx), es utilizar Response.sendError
del servlet, lo que da como resultado un redireccionamiento a una página de error. Como no hay una página de error configurada, da como resultado un 404.
Podemos cambiar este comportamiento estableciendo la propiedad de Jersey
Puede hacer esto en su subclase ResourceConfig
public JerseyConfig extends ResourceConfig {
public JerseyConfig() {
property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true);
}
}
O bien (con Spring Boot) puede agregarlo en su archivo application.properties
.
spring.jersey.init.jersey.config.server.response.setStatusOverSendError=true