Swagger UI: GroupedOpenApi, как установить глобальные параметры?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Swagger UI: GroupedOpenApi, как установить глобальные параметры?

Сообщение Anonymous »

У меня есть интерфейс Swagger с несколькими URL-адресами. Я разделил это на три группы API.
Конечные точки, начинающиеся с: /employee, /customer и все остальные (включая /employee и /customer). ).
Выглядит это так:
class OpenApiSwaggerConfiguration {

@Bean
fun ClientApi(globalHeaderConfiguration: GlobalHeaderConfiguration?): GroupedOpenApi {
return GroupedOpenApi.builder()
.group(CLIENT_NAME)
.pathsToExclude("/error/**")
.addOperationCustomizer(globalHeaderConfiguration)
.build()
}

@Bean
fun EmployeeApi(): GroupedOpenApi {
return GroupedOpenApi.builder()
.group(EMPLOYEE_NAME)
.pathsToMatch("/employee/**")
.pathsToExclude("/error/**")
.build()
}

@Bean
fun CustomerApi(customerHeaderConfiguration: CustomerHeaderConfiguration): GroupedOpenApi {
return GroupedOpenApi.builder()
.group(CUSTOMER_NAME)
.pathsToMatch("/customer/**")
.pathsToExclude("/error/**")
.addOperationCustomizer(customerHeaderConfiguration)
.build()
}
}

Для endpint /customer я хочу всегда добавлять поле Caller в качестве параметра, поэтому я добавил конфигурацию .addOperationCustomizer(customerHeaderConfiguration).< /p>
Для /employee, с другой стороны, я вообще не хочу добавлять поле «Вызывающий абонент», поэтому там не определена конфигурация.
Проблема возникает для ClientApi, поскольку он отображает все конечные точки на данный момент и содержит конфигурацию .addOperationCustomizer(globalHeaderConfiguration), которая добавляет вызывающую сторону везде, где добавляется другой параметр, а затем добавляет новое поле вызывающего абонента. Однако, следуя тому, что я говорил ранее, я хотел бы как-то улучшить это, чтобы оно учитывало эти два предыдущих условия, т.е. всегда добавляйте поле Caller в /customer независимо от того, есть ли уже является параметром, но не добавляйте вызывающего абонента в /employee. То есть отображать все конечные точки, но учитывать условия из EmployeeApi и CustomerApi. Я пытался сделать это с некоторыми исключениями, но не знаю, как это сделать.
Есть ли способ это сделать?
@Component
public class GlobalHeaderConfiguration implements OperationCustomizer {

@Override
public Operation customize(Operation operation, HandlerMethod handlerMethod) {
Parameter customHeaderVersion = new Parameter().in(ParameterIn.HEADER.toString())
.name("Caller")
.description("JWT")
.schema(new StringSchema())
.example(JWT)
.required(false);
List parameterList = operation.getParameters();
if (parameterList!=null && !parameterList.contains(customHeaderVersion)) {
operation.addParametersItem(customHeaderVersion);
Collections.rotate(parameterList, 1);
}
return operation;
}
}

@Component
public class CustomerHeaderConfiguration implements OperationCustomizer {

@Override
public Operation customize(Operation operation, HandlerMethod handlerMethod) {
Parameter customHeaderVersion = new Parameter().in(ParameterIn.HEADER.toString())
.name("Caller")
.description("JWT")
.schema(new StringSchema())
.example(JWT)
.required(false);
List parameterList = operation.getParameters();
if (parameterList == null) {
parameterList = new ArrayList();
operation.setParameters(parameterList);
}
if (!parameterList.contains(customHeaderVersion)) {
operation.addParametersItem(customHeaderVersion);
Collections.rotate(parameterList, 1);
}
return operation;
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»