Skip to content

MikhailBogachev/PET_DRF_friend_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PET_DRF_friend_service

Django сервис друзей.

PET проект: служба друзей Django. Сервис предоставляет возможность:

  • зарегистрировать нового пользователя
  • отправить одному пользователю запрос на добавление в друзья другому
  • принять/отклонить запрос на добавление в друзья от другого пользователя
  • видеть у пользователя список его исходящих и входящих запросов на добавление в друзья
  • просматривать список друзей пользователя
  • получить пользователю статус дружбы с каким-либо другим пользователем (нет ничего/есть исходящий запрос/есть входящий запрос/уже друзья)
  • удалить пользователя другого пользователя из своих друзей
  • если пользователь1 отправляет запрос на добавление в друзья пользователю2, а пользователь2 отправляет запрос на добавление в друзья пользователю1, то они автоматически становятся друзьями, их запросы автоматически принимаются

OpenAPI спецификация

OpenAPI спецификация в /project/schema.yaml

Запуск сервиса

  1. Клонировать репозиторий:
git clone https://github.com/MikhailBogachev/TEST_DRF_friend_service.git
  1. Gерейти в него в командной строке:
cd TEST_DRF_friend_service

Запуск с помощью docker

  1. Выполнить последовательно две команды:
docker build -t django_drf .
docker run -d -p 8080:8000 --name django_drf_app django_drf

Запуск с помощью Python env

  1. Cоздать и активировать виртуальное окружение:
python3 -m venv env
source env/bin/activate
  1. Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
  1. Выполнить миграции:
python3 manage.py migrate

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

python3 manage.py runserver

Примеры запросов. (Порт при запуске через dockerfile: 8080, через python env: 8000)

POST Регистрация пользователя
URL: http://127.0.0.1:8080/api/auth/users/
Body:

{
  "username": "user2"
  "password": "user2pass1234"
}

Response (JSON):

{
    "email": "",
    "username": "user2",
    "id": 2
}

POST Получение токена
URL: http://127.0.0.1:8080/api/auth/users/
Body:

{
    "username": "user2",
    "password": "user2pass1234"
}

Response (JSON):

{
    "auth_token": "f40fda302c9d0b170b3771122a9e8461..."
}

При запросах на следующие эндпоинты передаем токен в Headers (Token f40fda302c9d0b170b3771122a9e8461...)

GET Получить список входящих/исходящих запросов в друзья
URL: http://127.0.0.1:8080/api/friend-requests/
Response (JSON):

{
    "outgoing_requests": [
        {
            "id": 58,
            "from_user": "user2",
            "to_user": "user3",
            "accepted": false
        }
    ],
    "incoming_requests": [
        {
            "id": 56,
            "from_user": "user1",
            "to_user": "user2",
            "accepted": true
        }
    ]
}

POST Отправить заявку в друзья другому пользователю
URL: http://127.0.0.1:8080/api/friend-requests/
Body:

{
    "to_user": "user1",
}

Response (JSON):

{
    "outgoing_requests": [
        {
            "id": 1,
            "from_user": "user2",
            "to_user": "user3",
            "accepted": false
        }
    ],
    "incoming_requests": [
        {
            "id": 2,
            "from_user": "user1",
            "to_user": "user2",
            "accepted": false
        }
    ]
}

GET Принять входящую заявку в друзья. id - id входящей заявки
URL: http://127.0.0.1:8080/api/friend-requests/{id}/accept/
Response (JSON):

{
    "status": "Заявка принята"
}

GET Отклонить входящую заявку в друзья. id - id входящей заявки
URL: http://127.0.0.1:8080/api/friend-requests/{id}/reject/
Response (JSON):

{
    "status": "Заявка отклонена"
}

GET Получить список друзей
URL: http://127.0.0.1:8080/api/friends/
Response (JSON):

{
    "friends": [
        {
            "id_friendship": 12,
            "friend": "user1"
        }
    ]
}

GET Получить статус дружбы с пользователем
URL: http://127.0.0.1:8080/api/friends/{username}/
Response (JSON):

{
    "answer": "Уже друзья"
}

DELETE Удалить пользователя из друзей
URL: http://127.0.0.1:8080/api/friends/{username}/
Response (JSON):

{
    "status": "Пользователь удален из друзей"
}

Releases

No releases published

Packages

No packages published