/xsolla-school-backend-2021

RESTful приложение для летней школы Xsolla 2021

Primary LanguageC#

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 документация

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