Skip to content

ASP.NET Core Web API для заказа номеров в отеле

Notifications You must be signed in to change notification settings

secxndary/HotelBooking.API

Repository files navigation

Web API для бронирования номеров в отеле

Назначение проектов в решении:

Entities — все сущности приложения, в том числе модели базы данных и исключений
Contracts — интерфейсы репозиториев, логгера и прочие общие контракты
LoggerService — реализация сервиса для логгирования, дающий абстракцию над выбранным пакетом
Repository — репозитории, методы расширения, конфигурация сущностей и контекст, наследуемый от DbContext
Service.Contracts — интерфейсы для уровня сервисов
Service — реализация уровня сервисов
HotelBooking — основной проект, содержащий Program.cs, методы расширения, логи и MappingProfile
HotelBooking.Presentation — реализация уровеня представления: контроллеры и используемые в них фильтры
Shared — содержит Data Transfer Objects, а также сущности, отображающие query-параметры в запросе

Реализованный функционал и интересные фичи:

Onion-архитектура проекта (Domain, Service and Presentation layers)
Аутентификация и авторизация реализованы с помощью Identity и JWT (Access + Refresh)
Пагинация, фильтрация, поиск и сортировка реализованы с помощью query-параметров
Форматирование тела ответа в соответствии с заголовком Accept. Поддерживаются: JSON, XML, CSV
Кэширование на стороне клиента с помощью ETag и Last-Modified
Глобальная обработка исключений с помощью кастомного middleware
Поддерживается Data Shaping. Поддерживаемые сущности: Room
Поддерживается HATEOAS. Поддерживаемые сущности: Room
Возможность создания коллекции сущностей. Поддерживаемые сущности: Hotel, Room, HotelPhoto, RoomPhoto
Возможность создания дочерних сущностей вместе с родительскими за один запрос
Реализованы эндпоинты для всех основных HTTP-методов: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
Соблюдены принципы DRY, KISS и SOLID
Присутствует подробная Swagger-документация
Присутствует Rate Limiting

Запуск проекта:

  1. Добавить через Командную строку от имени Администратора переменную окружения для JWT Secret:
    setx SECRET "your_jwt_secret_that_is_at_least_32_symbols_long" /M
    
  2. (Опционально) Обновить строку подключения в appsettings.json. По умолчанию MS SQL Server:
    "server=.; database=HotelBooking; Integrated Security=true; TrustServerCertificate=true"
    
  3. Провести миграцию (Add-Migration, Update-Database) из основного проекта HotelBooking.

About

ASP.NET Core Web API для заказа номеров в отеле

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages