πŸͺ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠΈ fastapi: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠΈ Π² FastAPI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ "starlette", Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ основан FastAPI. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


from fastapi import FastAPI
from starlette.responses import Response

app = FastAPI()

@app.get("/")
def read_root(response: Response):
    response.set_cookie(key="cookie_name", value="cookie_value")

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠΈ Π² FastAPI

FastAPI β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм языка программирования Python. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡƒΠΊΠΈ (cookies) Π² FastAPI.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΡƒΠΊΠΈ?

ΠšΡƒΠΊΠΈ β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π΅Π±-сСрвСру ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросах.

Установка ΠΊΡƒΠΊΠΈ Π² FastAPI

Для установки ΠΊΡƒΠΊΠΈ Π² FastAPI ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Response ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ set_cookie. Для дСмонстрации Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ простой ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ /set-cookie, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт ΠΊΡƒΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_cookie" ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "Hello, World!".


from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/set-cookie")
async def set_cookie(response: Response):
    response.set_cookie(key="my_cookie", value="Hello, World!")
    return {"message": "Cookie has been set!"}
    

Когда наш сСрвСр ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ GET-запрос Π½Π° /set-cookie, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ set_cookie ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° response для установки ΠΊΡƒΠΊΠΈ. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя ΠΊΡƒΠΊΠΈ ("my_cookie") ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ("Hello, World!").

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΡƒΠΊΠΈ ΠΈΠ· запроса

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΡƒΠΊΠΈ ΠΈΠ· запроса Π² FastAPI, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Request ΠΈ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ cookies. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ значСния ΠΊΡƒΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_cookie" ΠΈΠ· запроса.


from fastapi import FastAPI, Request

app = FastAPI()

@app.get("/get-cookie")
async def get_cookie(request: Request):
    my_cookie = request.cookies.get("my_cookie")
    return {"message": f"The value of my_cookie is: {my_cookie}"}
    

Когда ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ GET-запрос Π½Π° /get-cookie, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ cookies ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° request для получСния значСния ΠΊΡƒΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_cookie". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ сообщСниС с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΡƒΠΊΠΈ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΠΊΠΈ

Π’ FastAPI ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠΈ, устанавливая Π΅Π΅ с ΠΈΡΡ‚Π΅ΠΊΡˆΠΈΠΌ сроком годности. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΡƒΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_cookie".


from fastapi import FastAPI, Response

app = FastAPI()

@app.get("/delete-cookie")
async def delete_cookie(response: Response):
    response.delete_cookie(key="my_cookie")
    return {"message": "Cookie has been deleted!"}
    

Когда ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ GET-запрос Π½Π° /delete-cookie, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ delete_cookie ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° response для удалСния ΠΊΡƒΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_cookie".

Π—Π°Ρ‰ΠΈΡ‚Π° ΠΊΡƒΠΊΠΈ

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ использовании ΠΊΡƒΠΊΠΈ. FastAPI прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΡƒΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подписСй ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ. Π­Ρ‚ΠΎ позволяСт ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΡƒΠΊΠΈ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΊΡƒΠΊΠΈ Π² FastAPI, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ сСкрСтный ΠΊΠ»ΡŽΡ‡ (secret key) ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ бСзопасности. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠΉ ΠΊΡƒΠΊΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ FastAPI, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎΠ± этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡƒΠΊΠΈ Π² FastAPI. ΠœΡ‹ познакомились с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ set_cookie ΠΈ delete_cookie ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Response, Π° Ρ‚Π°ΠΊΠΆΠ΅ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ cookies ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Request. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»Π° упомянута Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΊΡƒΠΊΠΈ для обСспСчСния бСзопасности.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

АутСнтификация Π² FastAPI | Basic Auth, Cookie Auth, Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π’ΠΎΠΊΠ΅Π½ | FastAPI Auth

Cookie & Header Parameters | Part12 | FastAPI Tutorial 2023

FastAPI - РСгистрация ΠΈ Авторизация ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ #5

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸͺ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΡƒΠΊΠΈ fastapi: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ