가상환경 만들기

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

1. 성능

  • ASGI 표준을 따라서 비동기 방식으로 요청을 처리 → 빠른 속도

2. 직관적 설계

  • 직관적인 내부 API
  • 의존성 주입
  • 일원화된 타입 힌트 (type hint)
  • OpenAPI 문서 자동 생성

3. 편리한 데이터 처리, 검증

  • Pydantic과 통합되어 데이터 검증, 직렬화, 파싱 과정을 안전하고 정밀하게 처리

4. 비동기 처리

  • 비동기 프로그래밍을 통해 동시에 다수의 작업을 처리
  • 데이터베이스와 외부 API와 같은 I/O 바운드 작업 등 빠르고 반응성이 뛰어난 애플리케이션 구축

 

FastAPI는 ASGI(Asynchronous Server Gateway Interface) 서버와 완벽하게 통합됨
DB연동, I/O처리, 타 API 요청, 머신러닝 추론 등의 요청이 빈번한 시스템에서 비동기적인 처리를 수행할 때, 타 프레임워크 대비 높은 동시 접속 성능, 응답성, 확장성, 자원 효율화가 향상됨

 

'Back-End > FastAPI' 카테고리의 다른 글

[FastAPI] 시작해보기~!  (0) 2025.08.31

+ Recent posts