코드 실행
uvicorn main:app --reload
or
pip install "fastapi[all]"
- uvicorn 포함 모든 선택적 의존성 및 기능 사용해서 설치
- 운영환경에서 배포하는 경우에는 fastapi, uvicorn은 따로 pip install 해주는게 좋다.
Frist Step
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
uvicorn main:app --reload
OpenAPI
- FastAPI는 API 정의를 위한 OpenAPI 표준을 사용해 Schema를 생성한다.
- Schema란 무언가의 정의 또는 설명, 추상적 설명이다.
- API Schema란 API의 Schema를 어떻게 정의하는지 지시하는 규격이다.
- Data Schema
- Schema란 Json 형태 처럼 나타낼 수 있다. 가지고 있는 데이터 타입 등을 뜻한다.
OpenAPI & JSON SCHEMA
- OpenAPI는 API에 대한 API 스키마를 정의하고, 이 스키마에 JSON 데이터 스키마 표준인 JSON Schema를 사용해서 API에서 보내고 받은 데이터 정의를 포함한다.
- FastAPI는 자동으로 API 설명 및 JSON Schema를 생성한다.
OpenAPI 용도
Summary
1.
from fastapi import FastAPI
- FastAPI는 Starlette 직접 상속하는 Class
2.
app = FastAPI()
- FastAPI 클래스의 Instance
- 모든 API 생성 상호작용의 핵심
- uvicorn이 참조하는 부분
3.
https://example.com/items/foo
- path는
/items/foo
이다.
- Operation (HTTP Method)
- POST : 데이터 생성
- GET : 데이터 읽기
- PUT : 데이터 업데이트
- DELETE : 데이터 삭제
- 이외에도 많것들 있었음 (OPTIONS, HEAD, PATCH, TRACE 등)
- HTTP 프로토콜에서는 이런 메소드를 하나 이상 사용해서 경로와 통신 가능
4. 경로 동작 데코레이터 정의
@app.get("/")
- path : /
- get 동작 사용을 의미
- 데코레이터는 FastAPI에게 아래 함수가 경로에 해당하는 get 동작하라고 알려준다.
@app.post()
@app.put()
@app.delete()
@app.options()
etc ...
5. 경로 동작 함수 정의
@app.get("/")
async def root():
return {"message": "Hello World"}
- get 동작을 사용해 URL "/" 요청받을 때마다 위 함수가 호출된다.
@app.get("/")
def root():
return {"message": "Hello World"}
- 일반 함수 정의
- dict, list, str, int 등을 반환