Этот проект представляет собой API для управления постами в блоге. Он разработан с использованием Django и Django REST Framework.
-
Клонируйте репозиторий на локальную машину:
git clone https://github.com/KolyanLock/postapi.git
-
Перейдите в директорию проекта:
cd postapi
-
Создайте виртуальную среду и активируйте ее:
Для Windows:
python -m venv .venv .venv\Scripts\activate
Для Linux/Mac:
python3 -m venv .venv source .venv/bin/activate
Примечание: В Linux вы можете использовать python вместо python3, в зависимости от конфигурации вашей системы.
-
Установите зависимости:
pip install -r requirements.txt
-
Настройте базу данных в файле settings.py:
DATABASES = { 'default': { 'ENGINE': '<драйвер базы данных>', 'NAME': '<имя базы данных>', 'USER': '<пользователь>', 'PASSWORD': '<пароль>', 'HOST': '<хост>', 'PORT': '<порт>', } }
-
Примените миграции:
python manage.py migrate
-
Запустите сервер разработки:
phpCopy code python manage.py runserver <хост>:<порт>
Теперь API должно быть доступно по указанному хосту и порту.
GET /api/posts/
Возвращает список всех постов
Пример запроса:
GET /api/posts/ HTTP/1.1
Host: <хост>:<порт>
POST /api/posts/
Создает новый пост. Требуется аутентификация с использованием токена пользователя.
Пример запроса:
POST /api/posts/ HTTP/1.1
Host: <хост>:<порт>
Authorization: Token <токен пользователя>
Content-Type: application/json
{
"title": "Заголовок поста",
"slug": "url-поста",
"content": "Содержимое поста",
"category": <id категории>,
"tags": [<список id тегов>]
}
GET /api/posts/{slug}/
Возвращает информацию о конкретном посте.
Пример запроса:
GET /api/posts/{slug}/ HTTP/1.1
Host: <хост>:<порт>
PUT /api/posts/{slug}/
Обновляет информацию о конкретном посте. Требуется аутентификация с использованием токена пользователя администратора или автора поста.
Пример запроса:
GET /api/posts/{slug}/ HTTP/1.1
Host: <хост>:<порт>
DELETE /api/posts/{slug}/
Удаляет конкретный пост. Требуется аутентификация с использованием токена пользователя администратора или автора поста.
Пример запроса:
DELETE /api/posts/{slug}/ HTTP/1.1
Host: <хост>:<порт>
Authorization: Token <токен пользователя>
API поддерживает следующие методы аутентификации:
- Token Authentication: Для аутентификации пользователя используется токен, который можно получить через /auth/token/login/
- Basic Authentication: Аутентификация с использованием базовых авторизационных данных (логин и пароль) через auth/basic/login/
- Session Authentication: Аутентификация с использованием сессий auth/basic/login/
API использует пагинацию по умолчанию с лимитом отображения 10 записей на странице.
API поддерживает фильтрацию с использованием DjangoFilterBackend. Вы можете фильтровать посты по полям категроий и тегов, передавая параметр в URL запроса.
Пример URL для фильтрации постов по категории:
/api/posts/?category=<slug категории>
/api/posts/?tag=<slug тега>
Подключена стандартная административная панель Djnago по стандартному адресу /admin/ через которую можно создавать, редактировать и удалять посты, категории, теги, пользователей, токены