Содержание:
PinPoint - Backend-приложение на Django(DRF) для работы с географическими точками на карте. Приложение предоставляет REST API для создания точек, обмена сообщениями и поиска контента в заданном радиусе от указанных координат.
- ✔ Создание точки на карте
- ✔ Создание сообщения к заданной точке
- ✔ Поиск точек в заданном радиусе
- ✔ Получение сообщений от пользователей в заданной области
- ✔ Использовать авторизацию для всех эндпоинтов
- Python 3.10
- Django 5
- Django Rest Framework
- PostgreSQL, PostGIS
- GeoDjango
- Django TestCase
- Клонируйте репозиторий и перейдите в папку проекта
git clone https://github.com/GGGamzat/PinPoint.git
cd PinPoint
- Соберите и запустите с помощью Docker
docker-compose up --build
-
Api будет доступно по адресу http://localhost:8000/api/
-
Запуск тестов
docker-compose exec web python manage.py test
- POST /api/auth/register/ - регистрация
- POST /api/auth/login/ - вход в систему
- POST /api/auth/logout/ - выход из системы
- POST /api/messages/ - создание сообщения к точке
- GET /api/messages/search/ - поиск сообщений в радиусе
Далее даны запросы в виде curl (две версии: для Windows и для Linux/macOS)
Не забудьте подставить свой ТОКЕН в запрос, там где это требуется (все запросы требуют токены кроме Регистрации и Входа в систему)❗❗❗
curl -X POST http://localhost:8000/api/auth/register/ `
-H "Content-Type: application/json" `
-d '{
"email": "[email protected]",
"password": "password"
}'
curl -X POST http://localhost:8000/api/auth/register/ \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "password"
}'
curl -X POST http://localhost:8000/api/auth/login/ `
-H "Content-Type: application/json" `
-d '{
"email": "[email protected]",
"password": "password"
}'
curl -X POST http://localhost:8000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "password"
}'
curl -X POST http://localhost:8000/api/auth/logout/ `
-H "Authorization: Token YOUR_TOKEN_HERE"
curl -X POST http://localhost:8000/api/auth/logout/ \
-H "Authorization: Token YOUR_TOKEN_HERE"
curl -X POST http://localhost:8000/api/points/ `
-H "Authorization: Token YOUR_TOKEN_HERE" `
-H "Content-Type: application/json" `
-d '{
"name": "Эйфелева башня",
"description": "Знаменитая башня в Париже",
"latitude": 48.8584,
"longitude": 2.2945
}'
curl -X POST http://localhost:8000/api/points/ \
-H "Authorization: Token YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"name": "Эйфелева башня",
"description": "Знаменитая башня в Париже",
"latitude": 48.8584,
"longitude": 2.2945
}'
curl -X GET "http://localhost:8000/api/points/search/?latitude=55.7558&longitude=37.6176&radius=10" `
-H "Authorization: Token YOUR_TOKEN_HERE"
curl -X GET "http://localhost:8000/api/points/search/?latitude=55.7558&longitude=37.6176&radius=10" \
-H "Authorization: Token YOUR_TOKEN_HERE"
curl -X POST http://localhost:8000/api/messages/ `
-H "Authorization: Token YOUR_TOKEN_HERE" `
-H "Content-Type: application/json" `
-d '{
"point_id": 1,
"text": "Очень красивое место!"
}'
curl -X POST http://localhost:8000/api/messages/ \
-H "Authorization: Token YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"point_id": 1,
"text": "Очень красивое место!"
}'
curl -X GET "http://localhost:8000/api/messages/search/?latitude=55.7558&longitude=37.6176&radius=5" `
-H "Authorization: Token YOUR_TOKEN_HERE"
curl -X GET "http://localhost:8000/api/messages/search/?latitude=55.7558&longitude=37.6176&radius=5" \
-H "Authorization: Token YOUR_TOKEN_HERE"