FastAPI 설치
pip install fastapi[all]
- zsh 환경에서 안 될 경우 (mac)
pip install fastapi\[all\]
라이브 서버 실행
- main.py 아래 코드를 작성한다.
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- 터미널에 uvicorn main:app --reload 실행
- uvicorn main:app 명령의 의미
확인하기
- http://127.0.0.1:8000 열기
- 아래의 JSON 응답을 볼수있다.
{"message": "Hello World"}
대화형 API 문서
- http://127.0.0.1:8000/docs 접근하면, Sqagger UI가 제공된다.
1단계 : FastAPI 임포트
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- FastAPI는 API에 대한 모든 기능을 제공하는 파이썬 클래스이다
2단계 : FastAPI 인스턴스 생성
from fastapi import FastAPI
# 인스턴스 생성 부분
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- app 변수는 FastAPI 클래스의 "인스턴스"
- 모든 API를 생성하기 위한 상호작용의 주요 지점이 된다.
- 아래 처럼 app은 unicorn이 참조한다.
- uvicorn main:app --reload
- app 을 my_awesome_api 로 수정하면 다음과 같이 사용해야한다
from fastapi import FastAPI
my_awesome_api = FastAPI()
@my_awesome_api.get("/")
async def root():
return {"message": "Hello World"}
- 그리고uvicorn main:my_awsome_api --reload 로 호출해야 한다
3단계: 경로 동작 생성
경로
- 첫 번째 / 에서 시작하는 URL의 마지막 부분
- https://example.com/items/foo
- 경로 → /items/foo
동작
- HTTP 메소드들을 동작 이라고 (문서 상에서)부를것이다.
- HTTP 메소드
- 자주 사용하는것 : POST, GET, PUT, DELETE
- 이외의 것 : OPTIONS, HEAD, PATCH, TRACE
- HTTP 메소드
- 일반적으로 아래 네가지를 사용
- POST : 데이터를 생성하기 위해
- GET : 데이터를 읽기 위해
- PUT : 데이터를 업데이트하기 위해
- DELETE : 데이터를 삭제하기 위해
from fastapi import FastAPI app = FastAPI() # / : 경로 # get : 동작 사용 @app.get("/") async def root(): return {"message": "Hello World"}
- get외에는 다음과 같이 사용한다.
- @app.post()
- @app.put()
- @app.delete()
- @app.options()
- @app.head()
- @app.patch()
- @app.trace()
4단계: 경로 동작 함수 정의
- 경로 : /
- 동작 : get
- 함수 : 데코레이터 아레에 있는 함수 (@app.get("/") 아래).
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
5단계: 콘텐츠 반환
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
- dict, list, str, int 등을 반환 할 수 있다.
- HTTP 메소드들을 동작 이라고 (문서 상에서)부를것이다.
pydantic, starlette
- FastAPI 설치시 두 라이브러리가 함께 설치
- 사실 FastAPI는 pydantic, starlette 두 라이브러리를 통해 동작
starlette
- 웹프레임워크
- FastAPI는 starlette의 서브 클래스
- 그래서 starlette 을 이미 알고 있다면, 같은 방법으로 사용할 수 있다.
- 따라서 FastAPI는 starlette의 기능을 그대로 사용
- 웹소켓 지원
- GraphQL 지원
- In-process background tasks 지원
- 시작과 종료 이벤트
- 애플리케이션 시작전과 종료될 때에 실행해야 하는 코드를 이벤트 처리기에 등록 가능
- requests을 기반으로 구축된 테스트 클라이언트
- requests는 라이브러리를 말함
- CORS, GZip, Static Files, Streaming responses
- 세션과 쿠키 지원
- 100% 테스트 범위 적용
- 모든 코드라인을 커버하기 위해 충분한 양의 테스트를 작성했다는것을 의미
- 100% type annotated codebase
- 모든 곳에 type hint를 적용 했다는 의미
pydantic
- FastAPI는 pydantic 과 완벽하게 호환된다.
- pydantic을 기반으로 하는 외부라이브러리를 포함함 (데이터 베이스를 위한 ORM ODM 같은 외부라이브러리)