70 lines
2.7 KiB
Markdown
70 lines
2.7 KiB
Markdown
# AutoBro Backend
|
||
|
||
API сервер для хранения и управления данными об автомобилях.
|
||
|
||
## Структура проекта
|
||
|
||
- **main.py** - основной файл с API эндпоинтами
|
||
- **models.py** - модели SQLAlchemy для базы данных
|
||
- **schemas.py** - схемы Pydantic для валидации данных
|
||
- **database.py** - настройка подключения к базе данных
|
||
- **crud.py** - функции для CRUD операций
|
||
- **auth.py** - функции для JWT авторизации
|
||
- **create_admin.py** - скрипт для создания первого админа
|
||
|
||
## Запуск проекта
|
||
|
||
1. Установите зависимости:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
2. Создайте первого администратора:
|
||
|
||
```bash
|
||
python create_admin.py --username admin --password your_password
|
||
```
|
||
|
||
3. Запустите сервер:
|
||
|
||
```bash
|
||
uvicorn main:app --reload
|
||
```
|
||
|
||
Сервер будет доступен по адресу http://localhost:8000
|
||
|
||
## JWT Авторизация
|
||
|
||
Для доступа к API необходима JWT авторизация. Вот как она работает:
|
||
|
||
1. Получите токен доступа, отправив POST-запрос к `/token` с вашими учетными данными:
|
||
|
||
```bash
|
||
curl -X POST http://localhost:8000/token -d "username=admin&password=your_password" -H "Content-Type: application/x-www-form-urlencoded"
|
||
```
|
||
|
||
2. Используйте полученный токен для доступа к защищенным эндпоинтам:
|
||
|
||
```bash
|
||
curl -X GET http://localhost:8000/cars -H "Authorization: Bearer your_token_here"
|
||
```
|
||
|
||
## API эндпоинты
|
||
|
||
- **POST /token** - получить JWT токен (авторизация)
|
||
- **POST /admins** - создать нового администратора (только для админов)
|
||
- **GET /users/me** - получить информацию о текущем пользователе
|
||
- **GET /cars** - получить список всех автомобилей
|
||
- **GET /cars/{car_id}** - получить информацию о конкретном автомобиле
|
||
- **POST /cars** - добавить новый автомобиль
|
||
- **PUT /cars/{car_id}** - обновить информацию об автомобиле
|
||
- **DELETE /cars/{car_id}** - удалить автомобиль
|
||
|
||
## Документация API
|
||
|
||
После запуска сервера документация доступна по адресам:
|
||
|
||
- Swagger UI: http://localhost:8000/docs
|
||
- ReDoc: http://localhost:8000/redoc
|