Skip to content

IvanFoksha/test_aplication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Справочник Организаций API

Это REST API для справочника организаций, зданий и видов деятельности, реализованное в рамках тестового задания.

Описание

Приложение предоставляет API для получения информации об организациях, их местоположении и сферах деятельности. Оно построено на стеке FastAPI + SQLAlchemy + PostgreSQL и полностью упаковано в Docker для легкого развертывания.

Стек технологий

  • Backend: Python, FastAPI
  • База данных: PostgreSQL
  • ORM: SQLAlchemy
  • Миграции: Alembic
  • Валидация данных: Pydantic
  • Контейнеризация: Docker, Docker Compose
  • ASGI Сервер: Uvicorn

Функционал API

  • Получение списка всех зданий.
  • Получение информации об организации по её ID.
  • Получение списка всех организаций в конкретном здании.
  • Получение списка всех организаций по конкретному виду деятельности.
  • Поиск организаций по частичному совпадению названия.
  • Поиск организаций по виду деятельности, включая все дочерние виды (рекурсивно).
  • Поиск организаций в заданном радиусе от географических координат.

Установка и запуск

Для запуска проекта вам понадобится установленный Docker и Docker Compose.

  1. Клонируйте репозиторий:

    git clone https://github.com/IvanFoksha/test_aplication
    cd test_aplication/
  2. Создайте файл .env: Скопируйте файл .env.example (если бы он был) или создайте .env вручную в корне проекта со следующим содержимым:

    DATABASE_URL="postgresql://user:password@localhost:5433/testdb"
    API_KEY="secret-api-key"

    API_KEY - это ваш ключ для доступа к API. Вы можете установить любое значение.

  3. Запустите проект с помощью Docker Compose: Выполните команду в корневой папке проекта:

    docker-compose up --build -d

    Эта команда соберет образ приложения, запустит контейнер с приложением и контейнер с базой данных PostgreSQL, а также применит все миграции.

  4. Проект готов к работе! Приложение будет доступно по адресу http://localhost:8000.

Использование API

Аутентификация

Все запросы к защищенным эндпоинтам должны содержать заголовок X-API-KEY с вашим ключом из .env файла.

Интерактивная документация

После запуска приложения автоматически генерируемая интерактивная документация доступна по двум адресам:

  • Swagger UI: http://localhost:8000/docs
  • Redoc: http://localhost:8000/redoc

В этой документации вы можете не только посмотреть все доступные эндпоинты, их параметры и схемы ответов, но и выполнять запросы прямо из браузера.

Примеры запросов (curl)

  • Получить список всех зданий:

    curl -X GET "http://localhost:8000/api/v1/buildings/" \
    -H "X-API-KEY: secret-api-key"
  • Получить организацию с ID=1:

    curl -X GET "http://localhost:8000/api/v1/organizations/1" \
    -H "X-API-KEY: secret-api-key"
  • Найти организации по названию "Рога":

    curl -X GET "http://localhost:8000/api/v1/organizations/search/name/?name=Рога" \
    -H "X-API-KEY: secret-api-key"
  • Найти организации в радиусе 10 км от центра Москвы:

    curl -X GET "http://localhost:8000/api/v1/organizations/search/location/?latitude=55.7558&longitude=37.6173&radius=10" \
    -H "X-API-KEY: secret-api-key"

Остановка проекта

Чтобы остановить все контейнеры, выполните команду:

docker-compose down

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published