fastAPI 공식문서 내용 https://fastapi.tiangolo.com/tutorial/first-steps/
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
1. FastAPI import
from fastapi import FastAPI
FastAPI는 API에 대한 모든 기능을 제공하는 파이썬 클래스입니다.
-> FastAPI는 Starlette를 직접 상속하는 클래스입니다.
-> FastAPI로 Starlette의 모든 기능을 사용할 수 있습니다.
2. FastAPI "인스턴스" 생성
from fastapi import FastAPI
app = FastAPI()
여기 있는 app 변수는 FastAPI 클래스의 "인스턴스"가 됩니다.
이것은 모든 API를 생성하기 위한 상호작용의 주요 지점이 될 것입니다.
이 app은 다음 명령에서 uvicorn이 참조하고 것과 동일합니다:
uvicorn main:app --reload
3. create a path operation
- path ( = endpoint, route)
여기서 "경로"는 첫 번째 /에서 시작하는 URL의 마지막 부분을 나타냅니다.
https://example.com/items/foo
경로 :
/items/foo
- operation
여기서 "동작(Operation)"은 HTTP 메소드 중 하나를 나타냅니다.
- POST
- GET
- PUT
- DELETE
- OPTIONS
- HEAD
- PATCH
- TRACE
* 데코레이터 *
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/")은 FastAPI에게 바로 아래에 있는 함수가 다음으로 이동하는 요청을 처리한다는 것을 알려줍니다.
- 경로 /
- get 동작 사용
@decorator 정보
이 @something 문법은 파이썬에서 "데코레이터"라 부릅니다.
함수 맨 위에 놓습니다.
"데코레이터" 아래 있는 함수를 받고 그걸 이용해 무언가 합니다.
우리의 경우, 이 데코레이터는 FastAPI에게 아래 함수가 경로 /에 해당하는 get 동작하라고 알려줍니다.
이것이 "경로 동작 데코레이터"입니다.
- @app.post()
- @app.put()
- @app.delete()
- @app.options()
- @app.head()
- @app.patch()
- @app.trace()
4. path operation function
- 경로: 는 /입니다.
- 동작: 은 get입니다.
- 함수: 는 "데코레이터" 아래에 있는 함수입니다 (@app.get("/") 아래).
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
GET 동작을 사용하여 URL "/"에 대한 요청을 받을 때마다 FastAPI에 의해 호출됩니다.
위의 경우 async 함수입니다.
async def 대신 일반 함수로 정의할 수 있습니다:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello World"}
5. return the content
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
dict, list, 단일값을 가진 str, int 등을 반환할 수 있습니다.
Pydantic 모델을 반환할 수도 있습니다.
JSON으로 자동 변환되는 객체들과 모델들이 많이 있습니다(ORM 등 포함).
'Language&Framework > Fast API' 카테고리의 다른 글
[Fast API] streamlit -> fastAPI를 이용해 백엔드 구성하기 (0) | 2023.02.28 |
---|---|
FastAPI - Pydantic (0) | 2023.02.17 |
Fast API의 특징 및 시작하기 (0) | 2023.02.17 |