pip install fastapi
Uvicorn이나 Hypercorn emd
pip install "Uvicorn[standard]"
from typing import Union
from fastapi import FastAPI
인스턴스명 = FastAPI()
@인스턴스명.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
def
대신async def
도 사용 가능
uvicorn main:인스턴스명 --reload
uvicorn main:인스턴스명?
- main: main.py 파일 (파이썬 "모듈").
- app: the object created inside of main.py with the line app = FastAPI().
- --reload: 코드가 변경된 후 서버 재시작하기. 개발환경에서만 사용하십시오.
{"item_id": 5, "q": "somequery"}로 된 JSON 응답을 볼 수 있다.
코드 이해하기
- 경로 / 및 /items/{item_id}에서 HTTP 요청 받기.
- 두 경로 모두 GET 연산(HTTP 메소드 로 알려진)을 받는다.
- 경로 /items/{item_id}는 경로 매개변수 int형 이어야 하는 item_id를 가지고 있다.
- 경로 /items/{item_id}는 선택적인 str형 이어야 하는 경로 매개변수 q를 가지고 있다.
http://IP:포트번호/docs
로 들어가면 Swagger를 이용한 자동 대화형 API 문서를 볼 수 있다
http://IP:포트번호/redoc
으로 들어가면 다른 자동 문서를 볼 수 있다.
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: Union[bool, None] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
위에서 uvicorn 명령에 --reload을 추가 했기 때문에 서버가 자동으로 리로딩 할 수 있어야 한다.
http://IP:포트번호/docs
로 이동정도는 궁금하면 본진 가서 보자
ujson - JSON "파싱".
email_validator - 이메일 유효성 검사
HTTPX - TestClient를 사용할 때 필요
jinja2 - 기본 템플릿 설정을 사용할 때 필요
python-multipart - request.form()과 함께 "parsing"의 지원에 필요
itsdangerous - SessionMiddleware 지원에 필요
pyyaml - Starlette의 SchemaGenerator 지원에 필요 (FastAPI와 쓸때는 필요 없을 것이다)
graphene - GraphQLApp 지원에 필요
ujson - UJSONResponse를 사용하려면 필요
uvicorn - 애플리케이션을 로드하고 제공하는 서버
orjson - ORJSONResponse을 사용하려면 필요
pip install fastapi[all]
로 모두 설치 할 수 있다.