2013-09-19 2 views
1

У меня есть интерфейс REST интерфейса с Джерси. Фактически я поддерживаю только тип контента только application/json для всех входящих запросов. Именно поэтому я определил мое сообщение читателя тела и писатель, какКак правильно обрабатывать запросы с неподдерживаемым типом контента?

@Provider 
@Consumes(MediaType.APPLICATION_JSON) 
@Produces(MediaType.APPLICATION_JSON) 
public class MarshallerProvider 
    implements MessageBodyReader<Object>, MessageBodyWriter<Object> 
{ 
} 

Теперь я написал тест, где я пытаюсь получить документ через GET и ожидаемый тип application/xml контента. Джерси отвечает на этот запрос MessageBodyProviderNotFoundException.

Итак, каков был бы лучший способ правильно обрабатывать такие неподдерживаемые запросы? Должен ли я писать блок отображения исключений? Поскольку это внутреннее исключение, мне не нравится этот подход?

Решение должно позволить мне вернуть HTTP 415 (Неподдерживаемый тип носителя).

ответ

1

Да, избежать обработчиков исключений, обрабатывать этот случай с методами:

@Path("example") 
public class Example { 

    @GET 
    public Response getBadStuff() { 
    return Response.status(Response.Status.UNSUPPORTED_MEDIA_TYPE).build(); 
    } 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Object getGoodStuff() { 
    return myObject; 
    } 
} 
+0

Причиной моей проблемы является '@ Consumes' аннотации на' MarshallerProvider'. Поэтому Джерси не может найти поставщика сообщений. Если я удалю эту аннотацию, я получаю ошибку 406. Каков правильный код ошибки для отправки запроса с неподдерживаемым типом контента. Итак, я дам вам верх, исправлю свой вопрос и дам правильный ответ на исправленный вопрос. – Oliver

Смежные вопросы