Swagger OpenAPI configuration
Разработать спецификацию в формате OpenAPI для набора веб-сервисов, реализующего следующую функциональность:
Первый веб-сервис должен осуществлять управление коллекцией объектов. В коллекции необходимо хранить объекты класса City, описание которого приведено ниже: Веб-сервис должен удовлетворять следующим требованиям:
API, реализуемый сервисом, должен соответствовать рекомендациям подхода RESTful. Необходимо реализовать следующий базовый набор операций с объектами коллекции: добавление нового элемента, получение элемента по ИД, обновление элемента, удаление элемента, получение массива элементов. Операция, выполняемая над объектом коллекции, должна определяться методом HTTP-запроса. Операция получения массива элементов должна поддерживать возможность сортировки и фильтрации по любой комбинации полей класса, а также возможность постраничного вывода результатов выборки с указанием размера и порядкового номера выводимой страницы. Все параметры, необходимые для выполнения операции, должны передаваться в URL запроса. Информация об объектах коллекции должна передаваться в формате json. В случае передачи сервису данных, нарушающих заданные на уровне класса ограничения целостности, сервис должен возвращать код ответа http, соответствующий произошедшей ошибке. Помимо базового набора, веб-сервис должен поддерживать следующие операции над объектами коллекции:
Рассчитать среднее значение поля metersAboveSeaLevel для всех объектов. Сгруппировать объекты по значению поля creationDate, вернуть количество элементов в каждой группе. Вернуть массив объектов, значение поля name которых содержит заданную подстроку. Эти операции должны размещаться на отдельных URL.
Второй веб-сервис должен располагаться на URL /route, и реализовывать ряд дополнительных операций, связанных с вызовом API первого сервиса: Для разработанной спецификации необходимо сгенерировать интерактивную веб-документацию с помощью Swagger UI. Документация должна содержать описание всех REST API обоих сервисов с текстовым описанием функциональности каждой операции. Созданную веб-документацию необходимо развернуть на сервере helios.