티스토리 뷰

반응형

[1] FastAPI 란?

 

FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크 라고 합니다. 

 

파이썬 웹프레임워크로 Flask와 Django가 양대산맥 이였는데요,, 

FastAPI가 Flask를 대체할 것이라고 보는 분들도 많으시고 (참고: FastAPI의 시대, 아직도 Flask 쓰시나요? )

여기저기 매우 핫하네요  🔥

 

 

https://fastapi.tiangolo.com/ko/#_2



[2] FastAPI 특징 

 

문서 에 나오는 FastAPI 특징입니다. 

  • 빠름: (Starlette과 Pydantic 덕분에) NodeJS 및 Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
  • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. *
  • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소. *
  • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
  • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
  • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
  • 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
  • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.

 

그리고 API 문서를 자동으로 만들어줍니다. 

그것도 두가지 타입이나.. 🥹

 

1.  Swagger UI

 

서버를 실행하고 (local host) 

http://127.0.0.1:8000/docs 로 가보면 

 

https://fastapi.tiangolo.com/ko/

 

 

2. ReDoc

 

http://127.0.0.1:8000/redoc 로 가보면

 

https://fastapi.tiangolo.com/ko/

 

 

둘 중에 원하는 스타일 사용하면 됩니다,, 감동,, 

 

 

 

[3] FastAPI 설치하기  (with Pycharm Pro)

 

Pycharm Pro를 쓰면 

NewProject > FastAPI 선택하셔서 프로젝트 만드시면 됩니다.

 

 

그럼 가상환경에 필요한 패키지들이 알아서 세팅되고

main.py 라는 파일도 만들어집니다. 

여기서 Run 하면 서버를 실행할 수 있어요

 

 

 

[3.1] FastAPI 설치하기  (without Pycharm Pro)

 

만약 Pycharm Pro를 안쓰고 직접 세팅한다면 

 

1. 가상환경에 필요한 패키지들 설치 

 

fastapi 설치

pip install fastapi

 

Uvicorn (ASGI 서버) 설치 

pip install uvicorn[standard]

 

 

2. main.py 만들기 

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}


@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

 

 

3. 서버 실행

uvicorn main:app --reload

 

https://fastapi.tiangolo.com/ko/

 

 

[4] 예제코드 살펴보기 

 

Tutorial - User Guide > First Steps 에 나오는 내용입니다. 

 

 

1. Import FastAPI

 

FastAPI 를 import 해줍니다. 

FastAPI는 너의 API 를 위해 모든 기능을 제공해주는 Python Class 입니다. 

 

 

2. Create a FastAPI "instance"

 

 

FastAPI 클래스의 인스턴스를 만들어줍니다. 

이 app은 uvicorn이 명령에서 참조하는 app과 동일합니다.

 

 

그래서 만약 다른 변수명으로 만들면 명령어도 함께 바꿔줘야합니다. 

 

 

 

3. Define a path operation decorator

 

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

 

파이썬에서 @something syntax 를 decorator 라고 부릅니다. 

FastAPI 에서는 path operation decorator 를 통해

function 의 두가지 정보를 나타 냅니다

 

1) path  /

2) operation 는 get

 

 

1)  Path

path는 URL의 last part 를 말하며 endpoint, route 로 불리기도 합니다.

 

 

2)  Operation

 

Operation은 HTTP methods 를 말합니다. 

 

일반적으로 쓰는 것

 

exotic (이국적인) 것

 

 

 

4. Define the path operation function

 

이제 decorator 밑에 function을 정의해줍니다.

 

 

여기서는 async fuction을 정의해주기 위해서 async def syntax 를 썼는데  (참고: Concurrency and async / await)

아래처럼 normal function 으로 정의해줄 수 도 있습니다. 

 

 

5. Return the content

 

마지막으로 content 를 리턴해줍니다. 

 

 

dict, list 를 리턴해줄 수 도 있고 single value (str, int 등)을 리턴해줄 수 도 있습니다. 

또한 Pydantic model 을 리턴해줄 수 도 있습니다. 

 

 

정리해보자면...

 

 

 

 

 

 

 

 

 

반응형
댓글