Swagger 2 или 3 для Spring Data Rest
У меня есть приложение для весенней загрузки, использующее Spring Data Rest. У меня проблема с предоставлением хорошо читаемой документации по API с использованием чванства. Я пробовал spring fox и springdoc, но у каждого свои проблемы
- Весенняя лиса:
- Не могу изменить название тега репозитория, только описание
- Нет поддержки прогнозов
- Пока нет поддержки openAPI3 (на самом деле это не большая проблема)
- Springdoc (https://springdoc.org/)
- Не могу изменить ни имя тега, ни описание (@Tag не работает в репозиториях)
- Нет поддержки прогнозов
- Одно и то же репо получает 3 тега, например, books-entity-controller, books-search-controller (с методами родительского класса) и books-property-reference-controller (с ненужным перечислением URL-адресов /{id}/{property}).
Есть способ лучше? Мне нравится spring fox за то, что он не предоставляет более одного тега, а также автоматически сгенерированные имена тегов лучше, например, Books Entity вместо books-entity-controller. Но было бы лучше либо настроить его, либо найти лучшую альтернативу.
2 ответа
Springdoc
Не могу изменить ни имя тега, ни описание (@Tag не работает в репозиториях)
а также
Одно и то же репо получает 3 тега
Вы можете настроить это. Используйте следующее на уровне класса контроллера.
@Tag(name = "Name of the Tag", description = "Description of the tag")
или
@Tags(value = {
// Multiple @Tag annotations separated by comma ,
})
или следующее на уровне метода.
@Operation(tags = {"Tag 1", "Tag 2"})
Помнить:
@Tag
на уровне класса переопределит теги уровня операции для конкретного класса.- Тег уровня класса может иметь только 1 значение.
Поэтому, если вам нужен контроллер с несколькими тегами, вы должны изолировать его в другом классе, у которого нет @Tag
на уровне класса.
Нет поддержки прогнозов
Я никогда не пользовался проекциями. Я обычно использую@JsonIgnore
чтобы удалить ненужные, но это зависит от вашего варианта использования.
Если вы хотите скрыть что-то из схемы, используйте метод ниже
@Schema(description = "Example POJO to demonstrate the hidden attribute")
class Example {
...
@Schema(hidden = true) // <--- Will be hidden from the Swagger UI completely
String exampleId;
...
}
Надеюсь, это поможет. Оставьте комментарий для любых разъяснений.
Я рекомендую Spring REST Docs вместо Swagger. Spring REST Docs тестируется, чтобы гарантировать, что ваша документация по API всегда синхронизируется с вашим API. Выступление Энди объясняет, почему Spring REST Docs более подходит для документации API, чем Swagger.
Вы можете найти официальное простое руководство и другие образцы.
Мой проект Github использует его. Вы можете клонировать репозиторий и просмотреть сгенерированный HTML- код документации /sga-booking/index.html. Связанный файл Spring REST Docs:
Если вы найдете мой Github полезным, поставьте ему звезду.