타입 힌팅(Type Hinting)은 코드의 가독성과 유지보수성을 높이고, 오류를 줄이는 데 도움을 주는 방법입니다. Python에서의 타입 힌팅은 변수나 함수의 매개변수 및 반환값의 타입을 명시하여 코드의 의도를 명확히 나타내는 것을 의미합니다. Flask와 FastAPI는 타입 힌팅
을 각각 다르게 사용합니다.
Flask의 타입 힌팅
Flask에서는 주로 URL 경로에 타입 힌팅을 적용합니다. 경로 변수의 타입을 지정하여 올바른 타입의 값이 전달되지 않을 경우 404 에러를 반환합니다.
from flask import Flask
app = Flask(__name__)
@app.route('/add/<int:num1>/<int:num2>')
def add(num1, num2):
return str(num1 + num2)
if __name__ == '__main__':
app.run(debug=True)
위 코드는 /add/1/2와 같이 정수형 값을 URL에 전달하면 두 수를 더한 값을 반환합니다. 하지만 /add/one/two와 같이 잘못된 타입의 값이 전달되면 404 에러가 발생합니다.
FastAPI의 타입 힌팅
FastAPI에서는 Python의 기본 타입 힌팅 문법을 사용합니다. 이를 통해 자동 문서 생성, 데이터 검증, 직렬화 등을 처리할 수 있습니다.
from fastapi import FastAPI
from typing import Union
app = FastAPI()
@app.get("/add/{num1}/{num2}")
def add(num1: int, num2: int) -> int:
return num1 + num2
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
위 코드는 /add/1/2와 같이 정수형 값을 URL에 전달하면 두 수를 더한 값을 반환합니다. FastAPI는 경로 변수의 타입을 자동으로 검증하
고, 잘못된 타입의 값이 전달되면 자동으로 422 Unprocessable Entity 에러를 반환합니다.
팁 :
데코레이터 문법 : 플라스크 @app.route를 사용하여 url과 함수를 매핑 하지만 fastapi는 http메서드를 명시하는 @app.get @app.post 등 사용
타입힌팅 : fastAPI는 파이썬 타입 힌팅을 기반으로 데이터 검증을 적용 반면 플라스크는 url경로 변수로 적용
요약
Flask: URL 경로에 타입 힌팅을 적용하여 경로 변수의 타입을 제한합니다. 잘못된 타입이 전달되면 404 에러를 반환합니다.
FastAPI: Python의 기본 타입 힌팅 문법을 사용하여 자동 문서 생성, 데이터 검증, 직렬화 등을 처리합니다. 잘못된 타입이 전달되면 422 에러를 반환합니다.
파이썬 공부 하다 보니 꼭 구분이 필요할까?
전공자와 비전공자 유튜브나 광고 보면 비전공자 출신 이 문장이 보인다.
나도 비전공자 이지만 공부 하다 보니 내가 어떤 상황이든 개발자이다.
출발 시점이 일찍 했냐 안했냐 그리고 얼만 만큼 자기가 노력해서 일찍 출발했던 사람을 따라잡냐 문제일 뿐 왜 구분을 지었을까?
개발자 세계에서 비전공자 홍보 수단을 언제부터 시작했는지 잘 모르겠지만 공부하다보니 구분 짓는 잘못된 느낌이 든다.
조금 더 이해 하기 쉽게 설명하자면
군인들끼리는 눈에는 군복에 칼각 잘 잡았다 와~~ 하지만 일반인 눈에는 군인
나의 생각
난 홍보 할때 구분할 필요가 있을까?라는 생각을 한다.
어차피 일찍 시작 하든 늦게 시작 하든 출발점은 다르지만 어차피 자기 자신이 포기하지 않고 개발자의 길을 간다고 마음먹고 생각한다면 개발자이다.
내일배움 카드든 어디서 배우든 어디서 뭘 배우든 개발자는 무관하다고 본다.
회사는 비즈니스와 그에 맞는 안정성을 더 많이 보기 때문에 출신 따지는거 보다 회사에 맞는 개발자 인재를 보는게 맞다고 생각한다.
'CoWithMe' 카테고리의 다른 글
Flask와 FastAPI에서 PyMySQL과 SQLAlchemy 사용법 비교 (94) | 2024.07.05 |
---|---|
팀 플젝에서 파이참&Git 사용기 Flask와 FastAPI의 요청과 응답 정리 (121) | 2024.07.04 |
라우팅 플라스크와 FastAPI 비교 그리고 학습 프레임과 실행 프레임의 차이 (109) | 2024.07.02 |
FastAPI vs Flask: APIRouter와 블루프린트 비교 (102) | 2024.07.01 |
FastAPI Pydantic을 활용한 요청 데이터 검증 및 응답 모델 정의 학습 요약 (130) | 2024.06.28 |