FastApi

Форк
0
/
main.py 
67 строк · 1.5 Кб
1
from fastapi import FastAPI, Depends, HTTPException, APIRouter
2
from starlette.requests import Request
3

4
app = FastAPI()
5

6
# yield
7
async def get_async_session():
8
    print("Получение сессии")
9
    session = "session"
10
    yield session
11
    print("Уничтожение сессии")
12

13

14
@app.get("/items")
15
async def get_items(session=Depends(get_async_session)):
16
    print(session)
17
    return [{"id": 1}]
18

19

20
# parameters
21
def pagination_params(limit: int = 10, skip: int = 0):
22
    return {"limit": limit, "skip": skip}
23

24

25
@app.get("/subjects")
26
async def get_subjects(pagination_params: dict = Depends(pagination_params)):
27
    return pagination_params
28

29

30
# class
31
class Paginator:
32
    def __init__(self, limit: int = 10, skip: int = 0):
33
        self.limit = limit
34
        self.skip = skip
35

36

37
@app.get("/subjects_class")
38
async def get_subjects_class(pagination_params: Paginator = Depends()):
39
    return pagination_params
40

41

42
# dependencies = [Depends(...)]
43
# class call
44
# request
45

46
class AuthGuard:
47
    def __init__(self, name: str):
48
        self.name = name
49

50
    def __call__(self, request: Request):
51
        if "super_cookie" not in request.cookies:
52
            raise HTTPException(status_code=403, detail="Запрещено")
53
        # проверяем что в куках есть инфа о наличии прав пользователя
54
        return True
55

56

57
auth_guard_payments = AuthGuard("payments")
58

59

60
router = APIRouter(
61
    dependencies=[Depends(auth_guard_payments)]
62
)
63

64

65
@app.get("/payments")
66
def get_payments():
67
    return "my payments...."
68

69

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.