AI/AI 서비스 개발
[AI 서비스 개발] 라우터와 엔드포인트
brave_sol
2025. 1. 8. 22:53
- 라우터 (Router)
- 여러 엔드포인트를 관리하는 역할
- 엔드포인트: 라우터가 처리하는 특정 경로(path) 와 메서드
- 메서드: get, post 등 http메서드
- URL 요청이 들어왔을때 어디로 보낼지 결정하는 “지도” 역할
- /home → 홈 화면 표시
from fastapi import FastAPI
app = FastAPI()
# 여기서 app은 "라우터"
@app.get("/home") # "엔드포인트" 정의
def home(): # 엔드포인트가 실행할 코드
return {"message": "Welcome Home!"}
- 라우터 분리
from fastapi import FastAPI, APIRouter
router = APIRouter() # 별도로 관리되는 라우터
@router.get("/home") # 라우터안에 정의된 엔드포인트
def home():
return {"message": "Welcome Home!"}
app = FastAPI()
app.include_router(router) # APIRouter를 FastAPI에 등록
- 마운트
- 웹 애플리케이션에서 특정 기능(라우터)을 특정 경로에 연결해서 관리
- AJAX와 form
- AJAX
- 비동기적, fetch, XMLHttpRequest 등
- 페이지를 리로드하지 않고 필요한 데이터만 받아 화면에 반영
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data)); // 데이터만 갱신
- HTML form
- 동기적, 전송시 페이지 새로고침 발생
- 사용자가 정보를 입력할 수 있는 html요소
- 로그인, 회원가입 같은 곳에서 자주 사용.
<form action="/submit" method="POST">
<input type="text" name="username">
<button type="submit">Submit</button>
</form>
- 유효성 검사와 예외처리
- 유효성 검사
- 사용자가 입력한 데이터가 올바른지(규칙에 맞는지) 확인
- 문제가 생기기 전 확인
from pydantic import BaseModel, EmailStr class User(BaseModel): email: EmailStr age: int user = User(email="hello@example.com", age=25) # 유효성 검사 통과!
- 예외처리
- 예상치 못한 오류가 발생시, 프로그램이 중단되지 않게 처리
try: result = 10 / 0 # ZeroDivisionError 발생 except ZeroDivisionError: print("나누기에서 오류가 발생했습니다!")
반응형