본문 바로가기

공부방/Upstage AI Lab 4기

[FastAPI] FastAPI 기본 사용법, 프로젝트 세팅하기

FastAPI

웹 API를 빠르게 만들 수 있도록 해주는 프레임워크.

데이터베이스를 연결한다면, SQLAlchemy와 같은 외부 라이브러리를 통해 ORM 기능을 사용할 수 있다.

ORM(Object-Relational Mapping): 파이썬으로 데이터베이스 작업할 수 있게 해줌.
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 사이의 불일치를 해소하기 위한 프로그래밍 기법. ORM을 사용하면 Python 객체를 통해 데이터베이스 작업을 수행할 수 있어, 데이터베이스 작업을 더 직관적이고 객체 지향적으로 만들 수 있습니다. 일반적으로 FastAPI와 함께 SQLAlchemy를 사용하는 경우가 많습니다.

https://www.merixstudio.com/blog/how-use-fastapi-microservices-python?iframe-embedded=1

 

How to use FastAPI for microservices in Python? | Merixstudio

Use this article as a guide on how to use FastAPI in Python to reap all the microservices' benefits.

www.merixstudio.com

 

Typer

명령줄 인터페이스(CLI)를 만드는 데 사용. 

Typer는 Python의 타입 힌트를 기반으로 하여, FastAPI와 유사한 방식으로 CLI 애플리케이션을 개발할 수 있게 해주며, 사용자 친화적인 CLI를 빠르게 구축할 수 있습니다.

 


 

FastAPI 애플리케이션 작성

1) 가상환경 만들고, 패키지를 깔아준다. 

pip install fastapi
pip install 'uvicorn[standard]'

2) 간단한 main.py

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id}

넘 간단한 코드인데도 낯설다 너...

@app.get("/")

@app.get("/items/{item_id}")

여기서 ""사이에 있는 빨간 글씨 부분이 엔드포인트라고. 엔드포인트가 뭔데?

Endpoint는 API의 특정 정보나 기능에 접근할 수 있는 특정 URL(또는 URI). 클라이언트(웹브라우저, 모바일앱)가 서버와 통신할 수 있는 접점. 각 엔드포인트는 특정 작업이나 리소스와 연관되어 있다. 

 

  • 고유성: 각 엔드포인트는 특정 기능이나 리소스에 대해 고유한 접근점을 제공합니다.
  • 구조화: URL 구조를 통해 리소스나 작업을 논리적으로 구성합니다.
  • 동작 정의: HTTP 메서드(GET, POST, PUT, DELETE 등)와 결합하여 수행할 작업을 정의합니다.

 

@app.get(" /")
루트(root) 엔드포인트. 웹사이트의 메인 페이지와 같은 역할. http://주소주소.com 했을 때 나오는 페이지. 

 

@app.get("/items/{item_id}"
특정 아이템에 대한 정보를 제공하는 엔드포인트. {item_id}는 동적 부분으로, 실제 요청시 특정 ID로 대체.

 

3) 실행

FastAPI 애플리케이션이 Uvicorn을 통해 실행되면, 여러분의 컴퓨터에서 웹 서버 프로그램이 시작됩니다. 
이 서버는 8000번 포트에서 HTTP 요청을 "listen"(수신 대기)하고 있습니다.
브라우저에서 http://127.0.0.1:8000에 접속하면, 이 요청이 여러분의 FastAPI 애플리케이션으로 전달됩니다.

uvicorn main:app --reload

 

 

 

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

위 주소로 들어가보면 메인 페이지가 뜬다. 

서버를 종료하려면 CTRL+C.

여기서 서버가 뭔데.. 

로컬 서버:
http://127.0.0.1:8000 또는 http://localhost:8000은 여러분의 컴퓨터에서 실행되는 로컬 서버를 가리킵니다.
Uvicorn이 여러분의 컴퓨터를 임시로 웹 서버로 만들어주는 것.
넓은 의미에서 '서버'는 요청을 받아 처리하고 응답을 보내는 프로그램 또는 컴퓨터를 말함. 

 

3) 서버를 실행하는 또 다른 방법

프로그래밍 방식으로 직접 실행하기:
FastAPI 애플리케이션을 프로그램 내부에서 직접 실행하는 가장 일반적인 방법입니다.

import uvicorn

if __name__ == "__main__":
    uvicorn.run("main:app", port=8000, log_level="info")

두 번째 방법은 더 복잡하지만 유연성과 제어력이 높아 대규모 또는 복잡한 프로젝트에서 유용합니다. 간단한 개발이나 빠른 테스트에는 첫 번째 방법이 더 적합할 수 있습니다.