20. Request Forms and Files
1. Request Forms and Files
File
및Form
을 사용하는 것과 같이 files 및 form fields를 정의할 수 있다.
Note
- 업로드된 파일 및 form 데이터를 받기 위해서는 먼저,
$ pip install python-multipart
를 통해python-multipart
를 설치해야 한다.
2. Import File
and Form
- 먼저,
fastapi
의File
과Form
을 임포트한다.
from fastapi import FastAPI, Form, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
3. Define File
and Form
parameters
Body
또는Query
와 마찬가지로 file 및 form 매개변수를 생성한다.
from fastapi import FastAPI, Form, File, UploadFile
app = FastAPI()
@app.post("/files/")
async def create_file(
file: bytes = File(...), fileb: UploadFile = File(...), token: str = Form(...)
):
return {
"file_size": len(file),
"token": token,
"fileb_content_type": fileb.content_type,
}
- 위의 코드를 실행하면, 파일 및 form fields는 form 데이터로 업로드되며 파일 및 form fields를 받게 된다.
- 또한 일부 파일은
bytes
로 선언하고, 일부는UploadFile
로 선언할 수 있다. - path operation에서 여러
File
및Form
매개변수를 선언할 수 있다. - 하지만 이 경우 request에
application/json
대신application/x-www-form-urlencoded
를 사용하여 인코딩된 body가 있기 때문에 JSON의 형식으로 받는Body
fields는 선언할 수 없다.