가상환경 만들기
conda create -n fastapi python=3.10
conda activate fastapi
pip install fastapi==0.111
# main.py
# FastAPI import
from fastapi import FastAPI
# FastAPI 인스턴스 생성
app = FastAPI()
# Path Operation (데코레이터 기반)
@app.get("/")
async def get_main(): # 파이썬은 snake_case
return "Hello, World!"
Path Operation
Spring에서 @GetMapping, @PostMapping 같은 어노테이션이 붙은 메서드와 같음
→ 이 URL로 이 HTTP 메서드로 요청이 오면 이 함수를 실행해라
데코레이터
함수나 클래스를 수정하거나 확장하는 파이썬의 문법, 함수를 감싸서 동작을 변경
Java의 어노테이션과 비슷
@app.get("/users") def get_users(): return {"users": []} # 실제로는 이런 의미 def get_users(): return {"users": []} get_users = app.get("/users")(get_users) # 함수를 감싸서 새로운 함수로 만듦
실행
uvicorn main:app --port=8080 --reload
Spring Boot: 내장 서버(Tomcat)가 포함되어 있어서 그냥 실행하면 됨
FastAPI: 웹서버가 별도로 필요해서 서버를 직접 띄워야 함
uvicorn: Python 웹서버 like Java의 Tomcat
배포할 때 코드 안에 작성함
# main.py 안에 코드 추가
if __name__ == "__main__":
import uvicorn
uvicorn.run(
app,
host="0.0.0.0",
port=8080,
reload=False # 배포시에는 reload 끔
)
+) Swagger
localhost:port/url/docs
@app.get("/",
summary="엔드포인트이름",
tags=["Tag1"])
async def get_main():
'''
docsring (마크다운)
- 소스코드의 **주석**이 되면서
- 스웨거에 설명 추가도 됨
- 또는 **description**에 적어도 설명란에 들어감
'''
return "Hello, World!"
@app.get("/",
summary="엔드포인트이름",
tags=["Tag1"],
description="설명")
async def get_main():
return "Hello, World!"
'Back-End > FastAPI' 카테고리의 다른 글
[FastAPI] FastAPI 장점 (0) | 2025.08.31 |
---|