У меня есть интерфейс 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
Swagger UI: GroupedOpenApi, как установить глобальные параметры? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1719054790
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;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78655861/swagger-ui-groupedopenapi-how-to-set-global-parameters[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия