0.개요
python은 정말 많은것을 쉽게 만들수있는 언어이다.
그래서 나는 혼자 소규모 프로젝트를 만들때는 python을 주로 이용하는 편인데 이번에 React도 배웠고 Python 프로젝트의 UI를 따로 python의 GUI를 배워서 만들고싶지않고 FastAPI+ React 형식으로 WebUI 형식으로 만들고싶어서 FastAPI를 시작하였다. 학습은 공식문서를 참고하였다.
1.FastAPI 특징
FastAPI는 Python으로 작성된 고성능의 웹 프레임워크로, API 개발에 특화되어있고 RESTful API 및 기타 HTTP 기반 서비스 구축에 적합하다.
1-1.Swagger UI 자동생성
FastAPI는 Swagger UI를 자동으로 문서로 생성해주는 기능을 가지고있다.
1-2.빠른 개발,비동기 지원
Python의 async와 await 구문을 활용하여 비동기 API를 쉽게 작성하고 Python 타입 힌트를 사용하여 코드 작성이 간결하고 직관적이다.pip install "fastapi[all]"
2.FastAPI 설치
pip을 이용하여 fastapi를 설치하였고
[all]을 통해 옵션 종속성들도 같이 설치하였다.
fastapi의 옵션종속성에는 uvicorn, email-validator,python-multipart등등 포함되어있다.
pip install "fastapi[all]"
3.FastAPI 디렉터리 구조?
내가 새로운 프레임워크에 대해 알아보면 가장 먼저 알아보는게 디렉터리 구조인데 알아본 결과 FastAPI는 따로 프레임워크가 제한하고있는 프로젝트 디렉터리 구조는 없는것같다.
나는 소규모용으로 작게 사용할때 쓰는게 목적이긴해도 프로젝트의 추후 유지보수를 위해서는 표준 디렉토리 구조를 정해두고 만드는것이 좋을것같다.
4.FastAPI 시작해보기
우선 FastAPI 공식문서에 있는 FastAPI 기본 main.py 코드를 이용해서 FastAPI를 구동해보자
root 페이지에 {"message": "Hello World"}를 반환해주는 간단한 코드다.
from fastapi import FastAPI
#FastAPI 인스턴스 생성
app = FastAPI()
#경로 작동 데코레이터
@app.get("/")
async def root():#엔드포인트
return {"message": "Hello World"} #응답
#CRUD
#@app.get()
#@app.post()
#@app.put()
#@app.delete()
해당 uvicorn 명령어로 fastapi 파일을 구동할수있다.
#uvicorn으로 main 파일에 있는 app 이라는 이름의 FastAPI 인스턴스를 호출한다는뜻
uvicorn main:app --reload
터미널에 나온 로컬 주소를 통해 접속해보자
INFO: Will watch for changes in these directories: ['C:\\Users\\asa\\Desktop\\code\\FastAPI']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [27000] using WatchFiles
INFO: Started server process [18112]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 127.0.0.1:57186 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:57186 - "GET /favicon.ico HTTP/1.1" 404 Not Found
정상적으로 return 값을 확인해 볼수있다.
5.FastAPI Swagger,ReDoc 문서보기
위에 설명처럼 FastAPI는 API 문서를 기본적으로 생성해준다.
주소/docs 로 들어가면 Swagger 문서를 확인할있다.
주소/redoc 으로 들어가면 Redoc 문서를 확인할수있다.
반응형
'BackEnd > FastAPI' 카테고리의 다른 글
[FastAPI] Query,Path,Field (1) | 2025.01.03 |
---|---|
[FastAPI] 요청 본문(Request Body) (0) | 2025.01.03 |
[FastAPI] 매개변수 (0) | 2025.01.02 |