/api/v2/
.Authorization
. Формат: Token <ваш_токен>
. Токен больше не передается в теле запроса.POST
, ожидающих данные в формате JSON, следует использовать заголовок Content-Type: application/json
.requests
.POST /api/v2/login/
Права доступа: AllowAny
Описание: Аутентифицирует пользователя и возвращает токен доступа. Этот эндпоинт работает так же, как в V1.
application/json
):{
"username": "your_username",
"password": "your_password"
}
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
username |
string | Да | Имя пользователя. |
password |
string | Да | Пароль пользователя. |
{
"token": "your_auth_token"
}
import requests
url = "http://127.0.0.1:8000/api/v2/login/"
data = {"username": "your_username", "password": "your_password"}
response = requests.post(url, json=data)
print(response.json())
404 Not Found
: { "error": "User not found" }
401 Unauthorized
: { "error": "Invalid credentials" }
POST /api/v2/register/
Права доступа: AllowAny
Описание: Регистрирует нового пользователя и возвращает токен доступа. Этот эндпоинт работает так же, как в V1.
application/json
):{
"username": "new_username",
"email": "user@example.com",
"password": "new_password"
}
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
username |
string | Да | Желаемое имя пользователя. |
email |
string | Да | Email пользователя. |
password |
string | Да | Пароль пользователя. |
{
"token": "your_auth_token"
}
import requests
url = "http://127.0.0.1:8000/api/v2/register/"
data = {"username": "new_username", "email": "user@example.com", "password": "new_password"}
response = requests.post(url, json=data)
print(response.json())
400 Bad Request
: { "error": "Username already exists" }
или { "error": "Email already exists" }
500 Internal Server Error
: { "error": "Registration failed" }
POST /api/v2/logout/
Права доступа: Требуется аутентификация по токену.
Описание: Удаляет токен аутентификации, переданный в заголовке, осуществляя выход пользователя.
Заголовок | Значение |
---|---|
Authorization |
Token your_auth_token |
{
"message": "Logged out successfully"
}
import requests
token = "your_auth_token"
url = "http://127.0.0.1:8000/api/v2/logout/"
headers = {"Authorization": f"Token {token}"}
response = requests.post(url, headers=headers)
print(response.json())
401 Unauthorized
: { "error": "Invalid token" }
или { "error": "Authorization header missing" }
POST /api/v2/my-data/
Права доступа: Требуется аутентификация по токену.
Описание: Возвращает данные пользователя, ассоциированного с токеном в заголовке.
Заголовок | Значение |
---|---|
Authorization |
Token your_auth_token |
{
"id": 1,
"username": "current_username",
"email": "user@example.com",
"avatar": "/media/avatars/avatar.jpg", // или null
"gender": "male", // или "female", "unspecified"
"info": "Some info about the user", // или null
"city": "User City", // или null
"is_online": true // или false
}
import requests
token = "your_auth_token"
url = "http://127.0.0.1:8000/api/v2/my-data/"
headers = {"Authorization": f"Token {token}"}
response = requests.post(url, headers=headers)
print(response.json())
401 Unauthorized
: { "error": "Invalid token" }
404 Not Found
: { "error": "User data not found" }
GET /api/v2/user-data/<str:username>/
Права доступа: AllowAny
Описание: Возвращает публичные данные пользователя по его имени пользователя. Аутентификация не требуется.
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
username |
string | Да | Имя пользователя, чьи данные запрашиваются. |
{
"id": 2,
"username": "other_username",
"email": "other_user@example.com",
"avatar": "/media/avatars/other_avatar.jpg", // или null
"gender": "female", // или "male", "unspecified"
"info": "Some info about the other user", // или null
"city": "Other User City", // или null
"is_online": false // или true
}
import requests
username = "target_username"
url = f"http://127.0.0.1:8000/api/v2/user-data/{username}/"
response = requests.get(url)
print(response.json())
404 Not Found
: { "error": "User not found" }
POST /api/v2/search/
Права доступа: Требуется аутентификация по токену.
Описание: Позволяет искать пользователей по имени пользователя (и, возможно, по имени/фамилии). Результаты ограничены 20 пользователями и исключают текущего пользователя.
Заголовок | Значение |
---|---|
Authorization |
Token your_auth_token |
application/json
):{
"q": "search_query"
}
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
q |
string | Да | Поисковый запрос (имя пользователя, часть имени). |
{
"users": [
{
"id": 1,
"username": "found_user1",
"avatar": "/media/avatars/user1.jpg", // или null
"is_online": true, // или false, если доступно
"first_name": "First", // если доступно
"last_name": "Last" // если доступно
},
// ... другие найденные пользователи
],
"query": "search_query"
}
import requests
token = "your_auth_token"
url = "http://127.0.0.1:8000/api/v2/search/"
headers = {"Authorization": f"Token {token}"}
data = {"q": "testuser"}
response = requests.post(url, json=data, headers=headers)
print(response.json())
400 Bad Request
: { "error": "Search query \"q\" is required in the request body." }
401 Unauthorized
: { "error": "Invalid token" }
POST /api/v2/chats/
Права доступа: Требуется аутентификация по токену.
Описание: Возвращает список чатов текущего пользователя, отсортированных по времени последнего сообщения.
Заголовок | Значение |
---|---|
Authorization |
Token your_auth_token |
Массив объектов чатов. Каждый объект чата имеет следующую структуру:
[
{
"id": 1, // ID чата
"user1": { // Данные первого участника чата
"id": 10,
"username": "user1_username",
"avatar": "/media/avatars/user1.jpg",
"current_user": true // true, если это текущий пользователь
},
"user2": { // Данные второго участника чата
"id": 12,
"username": "user2_username",
"avatar": "/media/avatars/user2.jpg",
"current_user": false
},
"last_message": { // Последнее сообщение в чате
"id": 101,
"text": "Hello there!",
"photo": null,
"created_at": "10:30, 01.01.2023",
"user": {
"username": "user1_username",
"avatar": "/media/avatars/user1.jpg"
}
} // или null, если сообщений нет
},
// ... другие чаты
]
import requests
token = "your_auth_token"
url = "http://127.0.0.1:8000/api/v2/chats/"
headers = {"Authorization": f"Token {token}"}
response = requests.post(url, headers=headers)
print(response.json())
401 Unauthorized
: { "error": "Invalid token" }
500 Internal Server Error
: { "error": "Сообщение об ошибке сервера" }
POST /api/v2/chat/<int:chat_id>/
Права доступа: Требуется аутентификация по токену.
Описание: Возвращает все сообщения из указанного чата, если текущий пользователь является его участником. Сообщения отсортированы по времени создания.
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
chat_id |
integer | Да | ID чата, сообщения которого запрашиваются. |
Заголовок | Значение |
---|---|
Authorization |
Token your_auth_token |
Массив объектов сообщений. Каждый объект сообщения имеет следующую структуру:
[
{
"id": 1, // ID сообщения
"text": "First message text", // или null, если только фото
"photo": "/media/chat_photos/image.jpg", // или null, если только текст
"created_at": "09:00, 01.01.2023", // Время создания в формате ЧЧ:ММ, ДД.ММ.ГГГГ
"user": {
"username": "sender_username",
"avatar": "/media/avatars/sender_avatar.jpg" // или null
}
},
// ... другие сообщения
]
import requests
token = "your_auth_token"
chat_id = 1
url = f"http://127.0.0.1:8000/api/v2/chat/{chat_id}/"
headers = {"Authorization": f"Token {token}"}
response = requests.post(url, headers=headers)
print(response.json())
401 Unauthorized
: { "error": "Invalid token" }
403 Forbidden
: { "error": "You are not a participant in this chat" }
404 Not Found
: { "error": "Chat room not found" }
500 Internal Server Error
: { "error": "Сообщение об ошибке сервера" }