티스토리 뷰
[1] FastAPI 란?
FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크 라고 합니다.
파이썬 웹프레임워크로 Flask와 Django가 양대산맥 이였는데요,,
FastAPI가 Flask를 대체할 것이라고 보는 분들도 많으시고 (참고: FastAPI의 시대, 아직도 Flask 쓰시나요? )
여기저기 매우 핫하네요 🔥
[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 로 가보면
2. ReDoc
http://127.0.0.1:8000/redoc 로 가보면
둘 중에 원하는 스타일 사용하면 됩니다,, 감동,,
[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
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
[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
파이썬에서 @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 을 리턴해줄 수 도 있습니다.
정리해보자면...
- Total
- Today
- Yesterday
- PencilKit
- Flutter getter setter
- 구글 Geocoding API
- Python Type Hint
- drf custom error
- ipad multitasking
- 플러터 싱글톤
- Flutter Clipboard
- 플러터 얼럿
- flutter deep link
- Django Firebase Cloud Messaging
- flutter dynamic link
- Sketch 누끼
- 장고 Custom Management Command
- Flutter 로딩
- 장고 URL querystring
- Flutter Text Gradient
- DRF APIException
- SerializerMethodField
- ribs
- flutter 앱 출시
- Django Heroku Scheduler
- flutter build mode
- Django FCM
- github actions
- Dart Factory
- Watch App for iOS App vs Watch App
- cocoapod
- Flutter Spacer
- METAL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |