Я разрабатываю API REST с помощью Google App Engine JAVA с Джерси и JAX-RS. Я хочу, чтобы иметь возможность отправлять собственные ошибки пользователей в формате JSON, для этого я использую javax.ws.rs.ext.ExceptionMapper
Формат ошибки Google App Engine Джерси json
Все хорошо работает, когда я запустить приложение с Jetty на моей локальной машине, но когда я раскрываю в Google я получаю HTML по умолчанию 404 страница
Вот код ресурса:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{id}")
public Customer getCustomer(@PathParam("id") String id) {
Customer customer = getCustomer(id);
if(customer == null)
throw new NotFoundException("Customer not found");
return customer;
}
исключение картографа:
@Provider
public class NotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
@Override
public Response toResponse(NotFoundException e) {
ErrorMessage errorMessage = new ErrorMessage();
errorMessage.setErrrorMessage(e.getMessage());
errorMessage.setResponseCode(404);
return Response.status(Response.Status.NOT_FOUND).entity(errorMessage).type(MediaType.APPLICATION_JSON_TYPE).build();
}
}
Я ожидаю для получения JSON-форматированного объекта ErrorMessage в качестве ответа, но все, что я получаю, это страница HTML 404 по умолчанию.
Можете ли вы указать/вставить стек ошибок сервера? ли ваш код выбрасывает NotFoundException? – Vijay
Ну Джерси ловит NotFoundException и сопоставляет его с HTTP 404ответ. Так что нет стека – Heigo
Надеюсь, эта ссылка поможет вам http://stackoverflow.com/questions/26903729/how-to-handle-service-unavailable-scenarios-with-jersey-rest –