프로젝트

FastAPI 시작하고 프로젝트에 연동하기

TMJeti 2025. 4. 23. 17:03

CORS 정책 때문에 웹 브라우저에선 directions API를 직접 호출해올 수 없어서 FastAPI로 중계 서버를 만들 것이다. FastAPI는 파이썬의 프레임워크 이기 때문에 반드시 python이 깔려있어야 한다.

Download Python | Python.org

 

Download Python

The official home of the Python Programming Language

www.python.org

아마 FastAPI는 1.6 버전 이후로 지원된다고 한 것 같다. 최신 버전 깔면 문제없겠지

 

환경변수 직접 설정해줄 수도 있지만 밑에 2번째 체크박스 선택하면 알아서 환경변수 - 사용자변수 - Path에 등록시켜준다. (권장)

 

그다음 cmd 혹은 프로젝트 terminal로 들어가서 다음 명령어를 쳐준다.

필자는 프로젝트 terminal에서 실행해보겠다. 

cd D:\ai_travel_platform  # Your 루트 폴더로 이동
mkdir ai_api
cd ai_api

ai_trip은 flutter front 부분이다. FastAPI로 굴릴 ai_api 폴더를 생성한다.

 

터미널에서 그대로 가상환경을 만들어준다. 가상환경이란 특정 프로젝트만을 위한 독립된 Python 패키지 설치 공간이고 다른 프로젝트에서 사용하는 패키지 충돌을 방지하기 위해 (ex 프로젝트 A는 1.0.2 버전인데 프로젝트 B는 1.0.5  버전이면 오류날 수도 있다.) 서로 다른 가상환경에서 실행시켜 충돌을 피하는 것이다.

python -m venv venv #가상환경 venv 생성
venv\Scripts\activate  # 윈도우 전용 활성화

 

이런 오류가 뜰 수도 있는데 이건 Windows PowerShell에서 스크립트 실행이 제한돼 있어서 그렇다.

Execution Policy 설정만 바꿔주면 바로 해결되는 문제이다.

 

✅ 해결 방법 (1분컷)

  1. PowerShell을 관리자 권한으로 실행
    • 시작 메뉴 → "PowerShell" 검색 → 우클릭 → 관리자 권한으로 실행
  2. 아래 명령어 입력:
powershell
Set-ExecutionPolicy RemoteSigned

아래처럼 뜨면 Y 입력 후 엔터:

Do you want to change the execution policy? [Y] Yes [N] No [S] Suspend

다시 가상환경 경로로 가서:

powershell
venv\Scripts\activate

이제 (venv) 붙으면서 잘 활성화된다.

이렇게 앞에 (venv) 가 뜨면서 잘 설정되었다.

보안으로 겁주는데 실행하면 이상한 스크립트도 실행될 수 있다는 뜻이다. 아무 스크립트나 막 실행된다는 게 아닐 뿐더러 RemoteSigned는 기본적으로 안전한 수준이므로 사용해도 무관하다.


다시 넘어와서 FastAPI 설치 진행해보겠다.

pip install fastapi uvicorn[standard] python-dotenv

하고 나면 해당 폴더 내에

이런 것들이 생긴다. venv 내에 fastapi 프레임워크가 잘 다운받아졌다.

 

이어서 ai_api 폴더에 (/venv 내부가 아니다 주의!) api key를 보관할 .env 파일과 main.py 파일을 만들어준다.

extensions에 python 설치하는것도 잊지 말것, vs code는 자동으로 확장할까요 라는 알람이 뜨고 따라 설치하면 된다.

 

서버가 실행되는지 확인하기 위해 main에 간단하게 작성해본다.

#main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root():
    return {"message": " FastAPI 서버 정상 작동 중!"}

 

프로젝트 두 가지 모두 실행하는 방법 올려놓는다.

# 터미널 1 (FastAPI)
cd ai_api
venv\Scripts\activate  # 가상환경 켜기
uvicorn main:app --reload --port 8000

deactivate          # 가상환경 끄기

# 터미널 2 (Flutter Web)
cd ai_trip
flutter run -d chrome

 

deavtivate를 터미널에 입력하면 (venv) 가 사라지고 전역 시스템 환경으로 돌아간다.

 

fastAPI 실행 후 결과는 아무 웹 브라우저(Chrome, edge,...)에 http://localhost:8000을 입력해보면

이런 식으로 작동을 확인할 수 있다.

종료하고 싶다면 CTRL + C 누르면 된다.

 

FastAPI는 독립 서버이기 때문에 종료하지 않으면 계속 백그라운드에 돌고 있으니 Flutter 앱과는 별도로 종료하고 실행하는 것이 중요하다.