RESTful приложение
Тестовое задание для летней школы Xsolla 2021. Было необходимо реализовать систему управления товарами для площадки электронной коммерции с возможностью управления RESTful API.
✅ Что реализовано
Основные задачи
Реализованы следующие REST-методы API для управления товарами:
- Создание товара. Метод генерирует и возвращает уникальный идентификатор товара.
- Редактирование товара. Метод изменяет все данные о товаре по его идентификатору или SKU.
- Удаление товара по его идентификатору или SKU.
- Получение информации о товаре по его идентификатору или SKU.
- Получение каталога товаров. Метод возвращает список всех добавленных товаров с возможностью отправки по частям для снижения нагрузки.
Товар содержит уникальный ID, SKU, имя, тип, стоимость.
Дополнительные задачи
- Фильтрация товаров по их типу и стоимости в методе получения каталога товаров.
- Спецификация OpenAPI 3.0. Документация для разработанного REST API.
- Dockerfile для создания образа приложения системы и Docker-compose файл.
- Развертывание приложения на любом публичном хостинге, например, на heroku.
Требования
- .NET 5
🚀 Запуск приложения
Приложение можно собрать и запустить локально, либо запустить через Docker.
Локальный запуск
Для того, чтобы запустить проект локально с возможностью отладки понадобится установить .NET 5 SDK.
(Проверить версию .NET можно командой: dotnet --version
)
Ссылка на .NET с инструкцией установки.
Далее необходимо скачать исходники проекта и в папке с проектом выполнить команды:
dotnet restore # Восстановить зависимости
dotnet run # Запустить приложение
Запуск через Docker
Для запуска необходимо иметь Docker и Docker-compose. Аналогично скачиваем исходники и в папке с docker-compose файлом выполняем команды:
docker-compose build # Собрать проект
docker-compose up # Запустить проект
После запуска приложение будет доступно по адресу http://localhost:5000.
OpenAPI документация
- Интерактивная документация Swagger доступна по адресу http://localhost:5000/swagger/index.html
- Спецификация OpenAPI 3.0 доступна по адресу http://localhost:5000/swagger/v1/swagger.json
Heroku
Ссылка на демонстрационную версию проекта, развернутого на публичном хостинге Heroku:
https://xsolla-restful-api-2021.herokuapp.com/swagger/index.html
Дополнительно
Фильтрация
В методе получения товаров присутствуют фильтры: по стоимости, по типу, по странице с товарами и кол-вом объектов на странице. Все фильтры являются необязательными.
Фильтр | Описание | Значение по умолчанию | Пример |
---|---|---|---|
sortBy | Принимает строковые значения "price" и "-price", соответственно сортирует товары по возрастанию и убыванию цены | -price | api/merch/?sortBy=-price |
type | Принимает строковые значения типа товаров и выводит соответствующие товары | - | api/merch/?type=Clothes |
page | Принимает целочисленное значение и выводит объекты с заданной страницы | 1 | api/merch/?page=4 |
pageSize | Принимает целочисленное значение от 1 до 100 и выводит заданное кол-во объектов на заданной странице | 5 | api/merch/?pageSize=15 |