Прежде всего, я много искал, но любой уже созданный вопрос мог решить мою проблему. В моем проекте у нас много конечных точек, использующих 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, показанные выше, чтобы минимизировать код, который мы пишем для каждой конечной точки.