본문 바로가기

웹 프레임워크/FastAPI

FastAPI - 01 (FastAPI란?)

출처: https://fastapi.tiangolo.com/
아래의 내용은 공식 사이트의 내용을 제 경험과 생각을 추가하여 다시 정리한 것 입니다.

FastAPI란?

공식 사이트
문서: https://fastapi.tiangolo.com/
소스코드: https://github.com/tiangolo/fastapi

FastAPI는 Python 3.6 이상을 지원하는 빠른 웹 프레임워크.
API 개발에 중점(RESTful API를 구축에 적합).
'Starlette'의 비동기 프로그래밍 기능 이용.
'Pydantic': Python 코드에 최적화.
빠른 성능, 쉬운 사용, 그리고 뛰어난 오류 발견 기능을 제공.

주요 특징

빠름 - Starlette과 Pydantic으로 빠름
빠른 코드 작성
적은 버그 - 개발자에 의한 에러 감소
직관적
쉬움
짧음
견고함
표준 기반 - API에 대한 개방형 표준 기반

설치

FastAPI 패키지 설치

pip install "fastapi[all]”
# 또는
# pip3 install "fastapi[all]”

또는 패키지 각각 설치

pip install fastapi
pip install "uvicorn[standard]”

첫 번째 application

출처: https://fastapi.tiangolo.com/tutorial/first-steps/

Hello World

from fastapi import FastAPI

app = FastAPI() # FastAPI의 인스턴스 객체 app를 생성. 


@app.get("/")       # 경로 동작 데코레이터 (url 주소)
async def root():   # 경로 동작 함수
    return {"message": "Hello World"} # json Type으로 return

FastAPI 임포트
app 인스턴스 생성
(@app.get("/")) '경로(url) 동작 데코레이터' 작성
(def root(): ...) '경로 동작 함수' 작성 (데코레이터 바로 밑에)

서버 실행

uvicorn main:app --reload

main: 실행 되어야 할 python file(main.py) 입니다.
app: FastAPI()로 생성한 객체 명 (app = FastAPI()) 입니다.
-reload: 코드가 변경 되었을 때 변경 내용을 자동으로 반영합니다. 개발 시에만 사용 해야 합니다.

원격서버에서 위의 명령어를 실행하고 외부에서 원격서버에 접근하면 접근이 되지 않습니다. 아래와 같이 접근 가능한 호스트와 포트를 지정 할 수 있습니다.

uvicorn main:app --reload --host 0.0.0.0 --port=8503

--host 0.0.0.0: 외부의 모든 ip에서 접근 가능 하게 합니다.
--port=8503: 서비스의 포트를 변경합니다.

결과

http://127.0.0.1:8000

위의 url로 접속 하면 아래의 결과가 나옵니다.

{"message": "Hello World"}

원격 서버의 경우는 아래와 같은 형식으로 접속 합니다.

http://원격서버주소:지정한포트번호

원격 서버의 방화벽이 지정한 포트 번호를 허용 해야 합니다.

서버 종료

Ctrl + c

대화형 API 문서 자동 생성

대화형 API 문서를 자동으로 생성하고 제공합니다.

아래의 url로 접속 하시면 됩니다.

http://127.0.0.1:8000/docs

아래는 대화형 API 문서의 예시 입니다.

API 문서


출처: https://fastapi.tiangolo.com/tutorial/first-steps/