새소식

이것저것 개발노트

[FastAPI] [Chapter 6] FastAPI 기초 실행 - Hello World!

  • -

 

 

지금까지 준비한 환경에서 FastAPI를 실행해본다. 

프로젝트 디렉토리에 api 디렉터리를 생성하고 다음 파일을 추가한다. 

 

api/__init__.py 

(빈 파일)

 

api/main.py 

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello")
async def hello():
    return {"message": "hello world!"}

 

 

__init__.py 는 이 api 디렉토리가 파이썬 모듈임을 나타내는 빈 파일이다.

main.py에는 FastAPI의 코드를 적는다. 

 

 

main.py에서

app = FastAPI()를 살펴보자.

app은 FastAPI의 인스턴스이다. main.py에서 if __name__ == "__main__": 이라는 문구가 없지만, 실제로 uvicorn이라는 ASGI 서버를 통해 이 파일의 app 인스턴스가 참고된다. 

 

@app.get("/hello")를 살펴보자.

FastAPI 인스턴스에 대해서 데코레이터로 수정된 함수를 FastAPI에서는 경로 동작 함수 (path operation function) 라고 부른다. 

경로 동작 함수를 구성하는 데코레이터는 다음 두 부분으로 나뉜다.

- 경로 (path)

- 동작 (operation)

 

'경로'는 "/hello" 부분을 가리킨다.

이 API는 아래와 같은 엔드포인트를 가지고 있다.

URL : localhost:8000/hello

이 /hello 엔드포인트를 '경로'라고 부른다.

 

'오퍼레이션'은 get 부분을 말한다. 

이곳은 REST의 HTTP 메서드 부분으로, GET/POST/PUT/DELETE로 대표되는 HTTP 메서드를 정의한다. 

 

def 앞에 async이 붙어있다. 이는 비동기임을 알려주는 접근 제어자 (Access Modifier)이다.

접근 제어자란 클래스의 멤버(변수, 메서드 등)에 대한 접근 권한을 제어하는 데 사용되는 키워드이다. 이를 통해 정보 은닉의 개념을 실현하고, 클래스 외부에서의 직접적인 접근을 제어할 수 있다. 

 

 

API를 실행하여 hello world를 표시해본다.

 

프로젝트 디렉터리에서 다음 명령어를 실해아형 API를 실행한다.

> sudo docker compose up

 

그러면 아래와 같이 foreground에서 서버가 실행된 상태가 된다. 참고로 foreground한 사용자가 직접적으로 상호작용하는 프로세스나 작업을 가리킨다. 사용자가 특정 작업을 실행하고 그 진행 상황을 실시간으로 확인하며 필요한 경우 입력을 할 수 있는 상태이다. 

 

 

 

이제 브라우저에서 다음 URL에 접속해 본다.

URL > http://localhost:8000/docs

 

 

 

이런 화면을 Swagger UI라고 한다.

Swagger UI는 API의 사양을 알려주는 문서로, REST API를 표현하는 OpenAPI라는 형식으로 정의되어 있다. 

사용자는 Swagger UI를 통해 API의 엔드포인트 목록을 확인하고, 각각의 엔드포인트에 대한 세부 정보를 시각적으로 살펴볼 수 있다.

여기서 '문서'라고 했지만, 사실 이 UI는 단순한 정적 문서 파일이 아니라 실제로 API의 동작을 검증 할 수 있는 편리한 도구 (상화작용형 문서)이다. 

 

여기서 GET /hello라는 엔드포인트가 보인다. 엔드포인트란 API에서 요청을 받아들이고, 그에 따른 응답을 반환하는 디지털 위치 혹은 지점을 가리킨다. 

API를 호출할 때 그 호출이 도착하는 목적이다. 

엔드포인트는 일정의 URL로 표현되며, 이 URL을 통해 API 클라이언트가 API 서버에 접근하고 특정한 작업을 수행하거나 데이터를 가져올 수 있다. 엔드포인트가 나타나면 이것으로 서버가 성공적으로 구동되었음을 알 수 있다. 

 

 

응답을 보면 알 수 있듯이, 기본적으로 응답은 JSON 형식으로 반환된다. 이 외에도 FastAPI는 HTMLResponse, FileResponse 등 다양한 응답 형식을 지원한다.

 

 

 

 

FastAPI 서버는 foreground에서 동작하고 있는 상태이다. 필요에 따라 Ctrl+c 명령으로 멈출 수 있다. 

다음으로 ToDO 앱을 본격적으로 만들어 본다.먼저 ToDO 앱에 대해 설명하고 하나하나 만들어가 본다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.