πͺ ΠΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΡΠΊΠΈ 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. Π’Π°ΠΊΠΆΠ΅ Π±ΡΠ»Π° ΡΠΏΠΎΠΌΡΠ½ΡΡΠ° Π²Π°ΠΆΠ½ΠΎΡΡΡ Π·Π°ΡΠΈΡΡ ΠΊΡΠΊΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.