FastAPI tittratta form data HTML (Form) u file uploads (File/UploadFile) — differenti minn JSON bodies, peress li jużaw content types differenti (). Iż-żewġ huma ddikjarati b'parameter types speċjali.
FastAPI tittratta form data HTML (Form) u file uploads (File/UploadFile) — differenti minn JSON bodies, peress li jużaw content types differenti (). Iż-żewġ huma ddikjarati b'parameter types speċjali.
multipart/form-datafrom fastapi import Form
@app.post("/login")
def login(username: str = Form(), password: str = Form()): # form fields, not JSON
# data comes as application/x-www-form-urlencoded or multipart/form-data
return {"username": username}
Uża Form() biex tirċievi form fields HTML (eż. login form). Nota: rotta tista' tuża jew JSON body jew form data, mhux it-tnejn flimkien, peress li huma content types differenti. (Teħtieġ python-multipart installat.)
from fastapi import File, UploadFile
@app.post("/upload")
async def upload(file: UploadFile): # a single file
contents = await file.read() # read the file's bytes
file.filename # original name
file.content_type # MIME type
# save it:
with open(f"uploads/{file.filename}", "wb") as f:
f.write(contents)
return {"filename": file.filename, "size": len(contents)}
UploadFile huwa t-tip rrakomandat — file spooled (files kbar jmorru għad-disk, mhux kollu fil-memorja), b'metodi async (read, write, seek) u metadata. Għalxejn imma tiny files, użaha aktar milli raw bytes.
@app.post("/upload-many")
async def upload_many(files: list[UploadFile]): # multiple files
return [f.filename for f in files]
@app.post("/profile")
async def profile(name: str = Form(), avatar: UploadFile = File()):
# combine form fields AND a file upload in one multipart request
...
if file.content_type not in ["image/jpeg", "image/png"]: # check type
raise HTTPException(400, "Invalid file type")
# also: limit file SIZE, sanitize filenames, scan content — uploads are untrusted input
It-trattament ta' form data u file uploads huwa ħtiega komuni u praktika — login forms, profile picture uploads, document submissions, u file-processing APIs kollha jirrikjeduh, u jaħdem b'mod differenti minn JSON bodies li FastAPI juża b'mod default.
Infejm Form() għal form fields u speċjalment UploadFile għal uploads (l-approċċ rrakomandat, peress li jispula files kbar għad-disk rather than iċċargar kulħadd fil-memorja — importanti għal handling ta' files kbar mingħajr exhaustin RAM) huwa neċessarju għal dawn il-features.
Biss bħala importanti huwa r-responsabilità security li ġejja ma' uploads: peress li uploaded files huma input untrusted, validating it-type u size tagħhom, sanitizing filenames, u jekk taf kif inti tistennaf/tisservi huma essential biex tevita vulnerabilities.
Infejm kif tirċievi form fields, handle single u multiple file uploads, combine forms ma' files, u validate uploads safe huwa practical knowledge għal building real-world APIs li jaċċettaw user-submitted content.
Librerija ta' mistoqsijiet ta' intervisti tal-IT b'tweġibiet dettaljati — minn Junior sa Senior.
Iddona