Skip to content

Commit e7a0a9b

Browse files
committed
readme view
1 parent 3dcd386 commit e7a0a9b

2 files changed

Lines changed: 96 additions & 4 deletions

File tree

README.md

Lines changed: 93 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,93 @@
1-
<details>
2-
<summary>Some text</summary>
3-
Some text
4-
</details>
1+
# Title
2+
Данный шаблон был разработан для одной цели - облегчения и повышения качества
3+
выполненых тестовых заданий в рамках **FastAPI**.
4+
5+
# Quick start
6+
Для тех кто уже знаком с реализацией и всеми деталями - могут приступить к установке.
7+
## Enviroments
8+
Необходимо заполнить **.env.sample** и в последствии перемеиновать его в **.env**
9+
```python
10+
# .env.sample
11+
POSTGRES_PASSWORD=password # Пароль от базы данных (Настройка)
12+
DB_PASSWORD=password # Пароль от базы данных (Использование)
13+
TEST_POSTGRES_PASSWORD=password # Пароль от тестовой базы данный (Настройка)
14+
TEST_DB_PASSWORD=password # Пароль от тестовой базы данных (Использование)
15+
```
16+
## Docker
17+
Шаблон находится под системой управления и контеризации - **Docker**.
18+
Если у вас нет Docker - вы можете установить его с официального сайта: [Docker](https://www.docker.com/get-started/)
19+
- Вам необходимо сделать "Билд"
20+
```bash
21+
docker compose build
22+
```
23+
- Вам необходимо запустить окружение
24+
```bash
25+
docker compose up
26+
```
27+
- После успешного запуска приложение будет доступно по адрессу: http://localhost:8080
28+
29+
# View
30+
Обзор и детали данного шаблона
31+
## Найболее используемые
32+
Найболее используемые конструкции с которыми приходится часто взаимодействовать.
33+
- registration routers
34+
- В каждом приложений необходимо инициализировать router
35+
```python
36+
# api/users/views.py
37+
from fastapi import APIRouter
38+
39+
40+
router = APIRouter(prefix='/users',
41+
tags=['Users'],
42+
)
43+
```
44+
- Затем зарегистрировать роутер
45+
```python
46+
# api_v1/routers.py
47+
from api_v1.users.views import router as users
48+
49+
50+
# В этой функции нужно по порядку регистрировать routers
51+
def register_routers(app: FastAPI) -> None:
52+
app.include_router(
53+
router=users,
54+
prefix=settings.API_PREFIX,
55+
)
56+
```
57+
После регистрации данные маршруты будут доступны.
58+
- registration logs
59+
- Логи захватывают все исключения возникшие в системе
60+
и с помошью дисперичизации распределяется по нужным **file.log**
61+
```python
62+
# app_includes/logs_errors.py
63+
from fastapi import FastAPI
64+
from api_v1.exeptions import ValidationError
65+
66+
67+
# В данной функции регистрируются все исключения для захватывания Логами
68+
def register_errors(app: FastAPI) -> None:
69+
@app.exception_handler(ValidationError)
70+
async def validation_error_handler(
71+
request: Request,
72+
exc: ValidationError,
73+
):
74+
logger.opt(exception=True).warning(exc)
75+
response = dict(
76+
status=False,
77+
error_code=exc.status_code,
78+
message=exc.detail,
79+
)
80+
return JSONResponse(response)
81+
```
82+
- Если вы пишете пользовательское исключение например:
83+
```python
84+
from starlette.exceptions import HTTPException
85+
86+
87+
class ValidationError(HTTPException):
88+
89+
pass
90+
```
91+
То вам нужно его зарегистрировать как было показанно выше,
92+
иначе logs не смогут выявить данное исключение и данные будут потеряны.
93+
- registration middlaware

api_v1/routers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55

66

77
def register_routers(app: FastAPI) -> None:
8+
"""
9+
Функция по регистрации роутеров
10+
"""
811
app.include_router(
912
router=users,
1013
prefix=settings.API_PREFIX,

0 commit comments

Comments
 (0)