파이썬은 가상 환경을 통해 프로젝트마다의 독립된 환경을 구축할 수 있다. 하나의 PC안에서 독립된 가상 환경을 여러 개 만들수 있어, 하나의 PC안에 서로 다른 버전의 파이썬과 라이브러리를 쉽게 설치해 사용할 수 있다.
python3 venv -m myapi
source myapi/bin/activate
가상 환경에 정상적으로 진입했다면, 명령 프롬프트 왼쪽에 (myapi) 프롬프트가 보이는지 확인하자.
myapi 가상 환경에 진입한 상태에서 pip3 install fastapi
명령을 입력하면된다
pip3 install fastapi
웹 브라우저에서 "안녕하세요 파이보"를 출력해주는 첫 번째 프로그램을 만들어보겠다.
다음과 같이 main.py 파일을 작성하자.
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def hello():
return {"message":"안녕하세요 파이보"}
FastAPI 클래스로 생성한 app 객체가 바로 FastAPI의 핵심 객체이다. 모든 동작은 이 객체로부터 비롯된다. 함수명 위에 @app.get("/hello")
어노테이션은 /hello
라는 URL요청이 발생하면 해당 함수를 실행하여 결과를 리턴하라는 의미이다. 따라서 /hello
라는 URL이 요청되면 FastAPI는 {"message":"안녕하세요 파이보"}
라는 딕셔너리를 리턴할 것이다.
이제 작성한 프로그램을 실행해야한다. FastAPI로 작성한 프로그램을 실행하기 위해서는 FastAPI 프로그램을 구동할 서버가 필요하다. 먼저 uvicorn
을 설치하자.
유비콘(Uvicorn)은 비동기 호출을 지원하는 파이썬용 웹 서버이다.
pip3 install uvicorn[standard]
설치가 완료되었다면, 이제 생성한 Hello API를 실행해보자.
uvicorn main:app --reload
그러면 현재 PC에 8000번 포트로 FastAPI서버가 구동된다.
main:app
에서 main은 main.py 파일을 의미하고 app는 main.py의 app객체를 의미한다.--reload
옵션은 프로그램이 변경되면 서버 재시작 없이 그 내용을 반영하라는 의미히다.
FastAPI가 실행되면 FastAPI로 작성한 API는 /docs
URL을 호출하여 테스트해볼 수 있다.
http://127.0.0.1:8000/docs
다음 화면이 나타난다. 이 화면이 바로 FastAPI의 테스트가 가능한 API 문서라고 한다.
main.py에서 작성한 /hello
URL에 대한 API가 등록된 것을 볼 수 있다. 해당 API를 누르고 "Try it out" 버튼을 누른 후 "Execute" 버튼을 누르면 Hello API의 동작을 테스트할 수 있다.
hello 함수에서는 딕셔너리를 리턴했지만 FastAPI는 이를 자동으로 json 형태의 응답으로 리턴한다.
개좋네.. 예전에 끄적였던 스마트팜 모니터링용으로 구현한 React 서버랑 연동해서 한번 써봐야겠다..