Можно ли создать «общую» аннотацию Swagger? - PullRequest
0 голосов
/ 04 апреля 2019

Прежде всего, я много искал, но любой уже созданный вопрос мог решить мою проблему. В моем проекте у нас много конечных точек, использующих swagger , и моя проблема в том, что мы должны написать для них много похожего кода , чтобы подготовить документацию, различия между ними - тип объекта ответа и параметры «значения» и «примечания». Я хочу знать, возможно ли создать собственную пользовательскую аннотацию, которая объединяет весь код, который нам необходим для получения документации, и, конечно, со способом установки этих 3-х различных параметров в каждом, это сделало бы наш код намного чище. Это пример кода, который мы имеем во всех наших конечных точках:

@ApiOperation(
        value = "Endpoint 1 example",
        notes = "Endpoint 1 example notes",
        responseHeaders = {
                @ResponseHeader(name = RESPONSE_HEADER_X_CONVERSATION_ID,
                        description = RESPONSE_HEADER_DESCRIPTION_X_CONVERSATION_ID,
                        response = String.class),
                @ResponseHeader(name = RESPONSE_HEADER_X_CORRELATION_ID,
                        description = RESPONSE_HEADER_DESCRIPTION_X_CORRELATION_ID,
                        response = String.class),
                @ResponseHeader(name = "X_Implementation_Version",
                        description = "Implementation version of the service",
                        response = String.class)
        }
)
@ApiImplicitParams(
        {
                @ApiImplicitParam(name = RESPONSE_HEADER_AUTHORIZATION,
                        value = RESPONSE_HEADER_DESCRIPTION_AUTHORIZATION,
                        required = true,
                        paramType = PARAM_TYPE_HEADER
                ),
                @ApiImplicitParam(name = "Accept",
                        value = "Describes content type and API version. If API version is not specified, the lowest supported version is assumed.",
                        required = true,
                        paramType = PARAM_TYPE_HEADER
                ),
                @ApiImplicitParam(name = RESPONSE_HEADER_X_CONVERSATION_ID,
                        value = RESPONSE_HEADER_DESCRIPTION_X_CONVERSATION_ID,
                        paramType = PARAM_TYPE_HEADER
                ),
                @ApiImplicitParam(name = RESPONSE_X_APP_ID,
                        value = RESPONSE_HEADER_DESCRIPTION_X_APP_ID,
                        paramType = PARAM_TYPE_HEADER
                )
        }
)
@ApiResponses(
        {
                @ApiResponse(code = 200, message = RESPONSE_CODE_200_MESSAGE,
                        response = ResponseForEndpoint1.class),
                @ApiResponse(code = 400, message = RESPONSE_CODE_400_MESSAGE,
                        response = Error.class),
                @ApiResponse(code = 401, message = RESPONSE_CODE_401_MESSAGE,
                        response = Error.class),
                @ApiResponse(code = 404, message = RESPONSE_CODE_404_RESOURCE_NOT_FOUND_MESSAGE,
                        response = Error.class),
                @ApiResponse(code = 406, message = RESPONSE_CODE_406_FORMAT_NOT_SUPPORTED,
                        response = Error.class),
                @ApiResponse(code = 500, message = RESPONSE_CODE_500_MESSAGE,
                        response = Error.class),
                @ApiResponse(code = 503, message = RESPONSE_CODE_503_MESSAGE,
                        response = Error.class)
        }
)
public ResponseForEndpoint1 exampleMethod() {...};

Примечание : Чтобы было ясно, я хочу знать, есть ли способ создать новую аннотацию, которая объединяет аннотации Swagger, показанные выше, чтобы минимизировать код, который мы пишем для каждой конечной точки.

...