[FastAPI 공식문서] FastAPI - (4) FastAPI 시작하기

이영락·2024년 10월 9일

개발자 기본기

목록 보기
38/53

🏖️ FastAPI 시작하기

1. FastAPI 기본 설정

FastAPI를 시작하려면 먼저 아래와 같은 간단한 코드를 작성합니다.

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

위 코드를 main.py 파일에 저장합니다.

2. 서버 실행

터미널에서 아래 명령어로 서버를 실행합니다.

uvicorn main:app --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [28720]
INFO:     Started server process [28722]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

이 명령어는 uvicorn으로 main.py 파일의 app 객체를 실행하고, --reload 옵션은 코드 변경 시 서버를 자동으로 재시작하게 만듭니다.

코드를 작성하거나 복사, 편집할 때, 로컬 환경에서 실행하는 것을 강력히 권장합니다.

로컬 편집기에서 사용한다면, 모든 타입 검사와 자동완성 등 작성해야 하는 코드가 얼마나 적은지 보면서 FastAPI의 이점을 비로소 경험할 수 있습니다.

3. API 확인

브라우저에서 http://127.0.0.1:8000에 접속하면 다음과 같은 JSON 응답을 볼 수 있습니다:

{"message": "Hello World"}

4. 대화형 API 문서

FastAPI는 자동으로 API 문서를 생성합니다.

  • Swagger UI: http://127.0.0.1:8000/docs에서 API를 상호작용하면서 테스트할 수 있습니다.
  • ReDoc: http://127.0.0.1:8000/redoc에서는 ReDoc을 사용한 대안 문서를 확인할 수 있습니다.

5. OpenAPI 및 스키마

FastAPI는 OpenAPI 표준을 사용하여 API의 스키마를 자동으로 생성합니다. API에 대한 모든 설명과 경로, 가능한 매개변수 등을 정의합니다.

  • OpenAPI 스키마는 http://127.0.0.1:8000/openapi.json에서 확인할 수 있습니다.
{
    "openapi": "3.0.2",
    "info": {
        "title": "FastAPI",
        "version": "0.1.0"
    },
    "paths": {
        "/items/": {
            "get": {
                "responses": {
                    "200": {
                        "description": "Successful Response",
                        "content": {
                            "application/json": {



...

6. 단계별 요약

6.1 FastAPI 임포트

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

6.2 FastAPI 인스턴스 생성

  • app = FastAPI()는 FastAPI 클래스의 인스턴스를 생성하는 코드입니다.
  • 이 인스턴스는 API 요청을 처리하는 중심 역할을 합니다.

만약에 앱을 만든다면?

from fastapi import FastAPI

my_awesome_api = FastAPI()


@my_awesome_api.get("/")
async def root():
    return {"message": "Hello World"}

이 코드를 main.py에 넣고 uvicorn에 아래처럼 호출

uvicorn main:my_awesome_api --reload

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

6.3 경로 작동 생성

  • 경로는 URL에서 첫 번째/로 시작하는 URL의 뒷부분을 의미합니다
    예시
https://example.com/items/foo
/items/foo

"경로"

  • 일반적으로 "엔드포인드" 또는 "라우트"라고 불림
  • API를 설계할 때 "관심사"와 "리소스"를 분리하기 위한 방법임.
@app.get("/")
async def root():
    return {"message": "Hello World"}

이 코드는 "/" 경로에 대한 GET 요청을 처리하는 함수입니다.

  • 작동(Operation)은 HTTP 메소드(GET, POST 등)를 말하며, 특정 경로에 대해 수행하는 작업을 의미합니다.

  • API를 설계할 때 일반적으로 특정 행동을 수행하기 위해 특정 HTTP 메소드를 사용합니다.

    POST: 데이터를 생성하기 위해.
    GET: 데이터를 읽기 위해.
    PUT: 데이터를 수정하기 위해.
    DELETE: 데이터를 삭제하기 위해.

6.4 경로 작동 함수 정의

  • 경로: 는 /입니다.
  • 작동: 은 get입니다.
  • 함수: 는 "데코레이터" 아래에 있는 함수입니다 (@app.get("/") 아래)
  • 경로 작동 함수는 FastAPI가 특정 경로와 메소드에 대한 요청을 처리하는 함수입니다.
  • async def root()는 비동기 함수로, 요청이 있을 때 실행됩니다.

일반 함수로 정의할 수도 있습니다:

@app.get("/")
def root():
    return {"message": "Hello World"}

6.5 콘텐츠 반환

경로 작동 함수는 dict, list, str, int 등의 데이터를 반환할 수 있으며, FastAPI는 이를 자동으로 JSON으로 변환해 클라이언트에게 응답합니다.

7. FastAPI 실행 요약

  1. FastAPI를 임포트합니다.
  2. app 인스턴스를 생성합니다.
  3. 경로 작동 데코레이터를 작성합니다.
  4. 경로 작동 함수를 정의합니다.
  5. uvicorn main:app --reload 명령어로 개발 서버를 실행합니다.

이 단계로 FastAPI를 쉽게 시작할 수 있습니다. FastAPI는 자동으로 API 문서를 생성하고, 효율적인 비동기 API 처리를 지원하는 강력한 프레임워크입니다.

profile
AI Engineer / 의료인공지능

0개의 댓글