Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages