Skip to content

Dosto4k/api-chat-and-message

Repository files navigation

Описание

api-chat-and-message - REST API для работы с чатами и сообщениями.

Содержание

Функционал

  • Создание чата
  • Удаление чата со всеми сообщениями в этом чате
  • Получение чата с N последними сообщениями в этом чате
  • Отправка сообщения в чат

Используемые технологии

  • Язык программирования: Python.
  • Фреймворк: Django с Django REST Framework.
  • Пакетный менеджер: uv
  • Инструменты разработки:
    • django-debug-toolbar
    • pre-commit
    • python-dotenv
  • База данных: PostgreSQL
  • Средства контейнеризации: Docker и Docker-Compose

Запуск у себя

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

С помощью https

git clone https://github.com/Dosto4k/api-chat-and-message.git

С помощью SSH

git clone git@github.com:Dosto4k/api-chat-and-message.git

2. Перейдите в директорию проекта

cd api-chat-and-message/

3. Создайте и заполните .env файл на примере .env_example

4. Запустите проект через docker compose

docker-compose up -d --build

5. Приложение доступно по адресу http://127.0.0.1:8000/

6. Чтобы остановить docker-compose, выполните

docker-compose down

API Endpoints

1. POST /chats/ - Создать чат

Параметры:

  • title (Обязательный) - Название чата.
    Ограничения:
    • Длина 1...200 символов

Пример запроса: POST /chats/

{
    "title": "Чат 1"
}

Ответ:

{
    "id": 1,
    "title": "Чат 1",
    "created_at": "2026-01-15T20:48:45.993756+03:00"
}

Статус коды:

  • 201 - Чат создан успешно
  • 400 - Невалидные данные

2. GET /chats/{id}/ - Получить чат и последние N сообщений из этого чата

Url параметры:

  • {id} - идентификатор чата

Query параметры:

  • limit (Опционально) - Сколько последних сообщений из чата нужно получить.
    Ограничения:

    • Должен быть в диапазоне 1...100

    Значение по умолчанию: 20

Пример запроса: GET /chats/1/?limit=2

Ответ:

{
    "id": 1,
    "title": "Чат 1",
    "created_at": "2026-01-15T20:48:45.993756+03:00",
    "messages": [
        {
            "id": 2,
            "text": "Сообщение 2",
            "created_at": "2026-01-15T20:22:54.054882+03:00",
            "chat_id": 1
        },
        {
            "id": 1,
            "text": "Сообщение 1",
            "created_at": "2026-01-15T19:43:27.849659+03:00",
            "chat_id": 1
        }
    ]
}

Статус коды:

  • 200 - Чат и последние N сообщений получены
  • 400 - Невалидный limit
  • 404 - Чат с указанным в url id не существует

3. DELETE /chats/{id}/ - Удалить чат со всеми сообщениями в этом чате

Url параметры:

  • {id} - идентификатор чата

Пример запроса: DELETE /chats/{id}/

Статус коды:

  • 204 - Чат и сообщения из этого чата удалены
  • 404 - Чат с указанным в url {id} не существует

4. POST /chats/{chat_id}/messages/ - Отправить сообщение в чат

Url параметры:

  • {chat_id} - идентификатор чата

Параметры:

  • text (Обязательный) - Текст сообщения.
    Ограничения:
    • Длина 1...5000 символов

Пример запроса: POST /chats/1/messages/

{
    "text": "Сообщение 1"
}

Ответ:

{
    "id": 1,
    "text": "Сообщение 1",
    "created_at": "2026-01-15T21:27:18.335121+03:00",
    "chat_id": 1
}

Статус коды:

  • 201 - Сообщение было добавлено в чат {chat_id}
  • 400 - Невалидные данные
  • 404 - Чат с указанным в url {chat_id} не существует

Запуск тестов

1. Запустите приложение как описано в разделе Запуск у себя

2. Зайдите в контейнер приложения

docker exec -it app /bin/sh

Где app - Это название docker контейнера с приложением. Указывается в container_name сервиса приложения в docker-compose.yaml

3. После подключения к контейнеру запустите тесты

uv run manage.py test

4. Выйдите из контейнера приложения

exit

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors