Swagger не может создать документацию для HTTP PATCH

Я следил за приведенной ниже записью блога
: http://Transparent%20PATCH%20support%20in%20JAX-RS%202.0
http://Sample%20Http%20Patch%20in%20jersey
Чтобы создать конечную точку для поддержки метода HTTP "PATCH" в версиях зависимостей Jersey 2.6:

-Jersey: 2.6
-swagger-jersey2-jaxrs_2.10: 1.3.12

Вопрос? Почему конечная точка Patch не указана в документации пользовательского интерфейса swagger?

Анализ:

Если я аннотирую эту аннотацию, то создается документация для этой конечной точки, но не происходит взаимодействия.

@com.wordnik.swagger.jaxrs.PATCH

Конфигурации

JerssyApplicationInitializer

packages(true, "com.test.account.endpoint", "com.wordnik.swagger.jaxrs.json");
        //Swagger Configuration
        register(new ApiListingResourceJSON(), 10);
        register(JerseyApiDeclarationProvider.class);
        register(JerseyResourceListingProvider.class);

        //Genson Converter
        register(GensonJsonConverter.class, 1);
        register(createMoxyJsonResolver());

Я не уверен, если я что-то упустил, любая помощь или руководство будут полезны.

Документация по методу исправления:

 public static final String PATCH_MEDIA_TYPE = "application/json-patch+json";
    @PATCH
        //@com.wordnik.swagger.jaxrs.PATCH
        @PreAuthorize(userAuthenticationRequire=true)
        @Consumes(PATCH_MEDIA_TYPE)
        @Path("{id: .\\d+}")
        @ApiOperation(value = "Update Client Details in UIM System."
                    , response = State.class
                    , notes="Requesting User, should be the owner of the Client."
                    , consumes = PATCH_MEDIA_TYPE)
        @ApiResponses({
            @ApiResponse(code = _401, message = "If the access token is invalid.", response = String.class),
            @ApiResponse(code = _498, message = "If the access token is expired.", response = String.class),
            @ApiResponse(code = _420, message = "If Provided Input is not valid according to requirment specification."),
            @ApiResponse(code = _404, message = "If no client/app Found."),
            @ApiResponse(code = _200, message = "If Client Account has been Updated successfully. ", response=String.class)
        })
        public State updateClientDetails(@ApiParam(value="Client Id to be Updated.", required=true) @PathParam(CLIENT_ID) String clientId
                , @ApiParam(value = "Updated field and Value.", required = true) final State newState){
            //LOG.info("[ENTRY]- Received requst for updating Client {} from System.", clientId);
            System.out.println("----->" + someBean.test());
            //LOG.info("[EXIT]- Client Id {} Updation has been completed.", clientId);
            Test t = new Test();
            t.name = "Hello Test";
            System.out.println(t.name);
            return newState;
        }

person Jayaram    schedule 18.02.2015    source источник
comment
Когда вы говорите, что он не сгенерирован, вы смотрите на пользовательский интерфейс или сгенерированный Swagger JSON?   -  person Ron    schedule 18.02.2015
comment
Можете ли вы отредактировать вопрос с образцом подписи метода, включая его аннотации?   -  person Ron    schedule 18.02.2015
comment
@Ron Хм, отредактировано, пожалуйста, посмотрите ... Спасибо, что уделили свое время :)   -  person Jayaram    schedule 18.02.2015
comment
Еще два вопроса: аннотирован ли ресурс @Api? Какую версию swagger-core вы используете?   -  person Ron    schedule 18.02.2015
comment
@Ron: Да, у него есть @Api (значение = CLIENT_PATH, описание = Управление клиентом, такое как регистрация, чтение, обновление и удаление), неповрежденный его документ для создания другого метода, такого как GET, DELETE, присутствующего внутри. версия = 1.3.12 артефактИд = чванство-core_2.10   -  person Jayaram    schedule 18.02.2015


Ответы (1)


Взгляните на свой index.html. Это определяет, какие операции HTTP являются интерактивными, изменив его на это:

  window.swaggerUi = new SwaggerUi({
    url: url,
    dom_id: "swagger-ui-container",
    supportedSubmitMethods: ['get', 'post', 'put', 'delete', 'patch'],

У вас будет взаимодействие с методом PATCH:

введите здесь описание изображения

person fehguy    schedule 18.02.2015
comment
Спасибо .. Это действительно исправление с точки зрения swagger-ui для поддержки @ com.wordnik.swagger.jaxrs.PATCH, вот два вопроса: почему пользовательская аннотация Patch не работает? Поскольку я следую Jsonpatch (RFC 6902), то при отправке тела как части запроса на исправление я должен отправить что-то похожее на это [{op: replace,path:/message,value: patchedMessage}], которое не может быть сопоставлено с ресурс, так что любое исправление в этом фронте? - person Jayaram; 18.02.2015
comment
Когда я говорю о пользовательской аннотации патча, это выглядит как https://github.com/jersey/jersey/blob/2.6/examples/http-patch/src/main/java/org/glassfish/jersey/examples/httppatch/PATCH.java - person Jayaram; 18.02.2015
comment
Swagger сканирует только com.wordnik.swagger.jaxrs.PATCH, когда мы писали это, в джерси не было аннотации PATCH. Если вы хотите поддерживать настраиваемое поведение исправления, вам придется сделать это на сервере. Добавьте пока обе аннотации (Джерси и com.wordnik.swagger.jaxrs.PATCH), и все должно работать. Я добавлю билет, чтобы добавить поддержку сканирования для org.glassfish.jersey.examples.httppatch.PATCH - person fehguy; 18.02.2015
comment
Спасибо, я добавил два из них, а из пользовательского удалил @HttpMethod(PATCH).. - person Jayaram; 18.02.2015
comment
Джаярам, ​​у тебя сейчас все работает? Я открыл эту проблему, чтобы отслеживать ее: github.com/swagger-api/swagger -ядро/вопросы/876 - person fehguy; 19.02.2015
comment
Хм, это совпадение, что вчера, прежде чем опубликовать комментарий, я пытался использовать тот же подход. совместимость с патчем, здесь я имею в виду, что сигнатура метода будет принимать аргумент, как обычный bean-компонент, где пользователь вводит тело запроса, например [{op: replace,path:/message,value: patcheMessage}], я имею в виду следование спецификации RFC 6902 - person Jayaram; 19.02.2015
comment
Обратите внимание, что поддержка исправлений была зафиксирована и будет доступна в версии 1.5.2-M1. - person fehguy; 20.02.2015