как изобразить тип URL - PullRequest
       6

как изобразить тип URL

0 голосов
/ 17 ноября 2009

Я использую cxf как веб-сервис. Он поддерживает вывод запрошенных данных в формате xml и json. Я хочу знать, что если в моем коде произошло какое-то исключение, то я хочу вернуть ему код ошибки либо в xml, либо Формат json. Но я не знаю, когда давать json и xml, это зависит от запрошенного URL, который спросил пользователь.

пример

@ Путь ( "/ отчеты / объявление ракурс / LoginID / {LoginID} / издатель /")

PublisherReports getPublisherReportsAdView(

        @PathParam("loginId") String loginId,
        @QueryParam("fromDate") String fromDate,
        @QueryParam("toDate") String toDate,
        @QueryParam("filterValue") String filterValue);

Ответы [ 2 ]

1 голос
/ 17 ноября 2009

Если вы имеете в виду, что хотите определить тип mime, использованный для создания запроса, то вы можете использовать аннотацию @Consumes для указания, какой метод обрабатывает какой тип запроса. Чтобы вы могли написать:

// Called when an XML request is made
@Path("/reports/ad-view/loginId/{loginId}/publisher/")
@Consumes("application/xml")
PublisherReports getPublisherReportsAdViewXml(...

и

// Called when a JSON request is made
@Path("/reports/ad-view/loginId/{loginId}/publisher/")
@Consumes("application/json")
PublisherReports getPublisherReportsAdViewJson(...

Затем каждый вариант метода getPublisherReportsAdView () вызывает общий метод для выполнения фактической логики обработки, но по-прежнему обрабатывает исключения по-разному в зависимости от вызываемого метода.

0 голосов
/ 18 ноября 2009

Альтернативный подход, который не требует дополнительных методов, состоит в том, чтобы добавить параметр, аннотированный аннотацией @HeaderParam, и использовать его для хранения значения заголовка запроса Content-Type.

например:.

PublisherReports getPublisherReportsAdView(
                @PathParam("loginId") String loginId,
                @QueryParam("fromDate") String fromDate,
                @QueryParam("toDate") String toDate,
                @QueryParam("filterValue") String filterValue,
                @HeaderParam("Content-Type") String contentType)
{
  ...

Значение contentType, вероятно, будет также включать информацию о наборе символов, например: application / json; charset = UTF-8 , поэтому вам нужно будет игнорировать это при разработке, если запрос содержит JSON или XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...