Джерси 2 генерирует схему WADL с параметрами метода

Я использую Джерси 2 и хочу создать схему WADL. Когда я получаю доступ к <context_root>/application.wadl, я вижу все свои службы REST, но в случае, если служба использует JSON (а почти все мои службы используют JSON), я получаю следующее:

<resource path="/addItem">
    <method id="addItem" name="POST">
        <request>
            <representation mediaType="application/json"/>
        </request>
        <response>
            <representation mediaType="application/json"/>
        </response>
    </method>
</resource>

в то время как мой сервис выглядит так:

@POST
@Path("/addItem")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addItem(ItemDto item) {
    cartService.addItem(item);
    return Response.ok().build();
}

Могу ли я получить подробную информацию об ItemDto в моей схеме wadl?


person Evgeny Makarov    schedule 27.03.2014    source источник


Ответы (1)


Сам WADL, насколько я знаю, не предоставляет больше информации, чем вы получаете. Хорошо, на самом деле это так, потому что некоторые неопределенные пользователем ресурсы и методы скрыты в ответе /application.wadl по умолчанию, начиная с Jersey 2.5.1. Чтобы увидеть немного больше (но все же не то, что вы хотите получить), вы можете вызвать ресурс wadl с параметром запроса detail, т.е. /application.wadl?detail=true, см. Глава 16 документов Джерси.

Возвращаясь к вашему вопросу: если я правильно понимаю, то, что вы хотите, чтобы Джерси делал, это автоматически раскрывал JSON-схемы. ваших бобов в WADL, верно?

На данный момент это невозможно сделать в Jersey-2.x. Был модуль расширения в Jersey-1.x написан Джерардом Дэвисоном, но поддержка еще не была перенесена в Jersey-2.x (в настоящее время поддерживается только XSD).

Однако в журнале Джерси есть ошибка, поэтому, проявив некоторое терпение, вы можете получить нестандартное решение в один прекрасный день.

А пока вы можете попробовать сделать Быстрое и немного грязное решение, описанное в блоге Джерарда.

Я знаю, что ответ приходит немного поздно, но все же надеюсь, что он поможет.

Удачи.

person AdamL    schedule 26.05.2014