Skye7012 / S3ApiTestTask

Web API для тестового задания на ASP.NET 6, работающий с S3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

S3ApiTestTask

Web API для тестового задания на ASP.NET 6, работающий с S3

Table Of Contents

ТЗ

image

Общее описание

Реализован API на ASP.NET 6

Реализована поддержка docker-compose (см. "Локальный запуск")

В качестве s3 совместимого хранилища используется MinIO

В качестве ORM используется Entity Framework Core, в качестве СУБД PostgreSql

API задокументирован с помощью Swagger
Проект структурирован по принципам clean architecture
Используется CQRS через MediatR

Реализация

Ссылка на загрузку

  • При запросе ссылки на загрузку файла генерируется presigned URL и создается file в БД

Скачивание файла

  • Скачивание происходит по постоянной ссылке /AppFile/Download/{file_id}
  • Если файл был загружен в s3, то генерируется presigned Url для скачивание файла, на которую редиректится клиент
  • Если файл не был загружен в s3, то выкидывается ошибка
  • Если файл не был загружен в s3 и время жизни ссылки на загрузку закончилось, файл удаляется из БД

TODO

  • асинхронное создание файла в БД при срабатывание event на загрузку файла в MinIO

Локальный запуск


Volumes для БД и MinIO будет создан на уровень выше корневой директории

About

Web API для тестового задания на ASP.NET 6, работающий с S3


Languages

Language:C# 97.9%Language:Dockerfile 2.1%