[ 플레이데이터 SK네트웍스 Family AI 캠프 ]

[플레이데이터 SK네트웍스 Family AI 캠프 12기] 17주차 회고

AA_D 2025. 6. 20. 17:22

 

# 한 주를 보내며...

  지난주에 이어서 fastapi와 장고를 배우고 도커까지 배웠다. 백엔드수업은 프론트와 합쳐서 어떤식으로 구조가 짜이는지 배울 수 있었다. 이전까지 스트림릿만 사용해서 백엔드와 프론트의 경계에 대해 이해가 어려웠지만 각각 어떻게 작동하는지, 흐름을 어떻게 만들지 배울 수 있었다.

 

2. 개선점

 백엔드와 프론트엔드의 차이를 정확히 알게 되었다. 이전에는 백엔드와 프론트엔드의 기능을 구분하는게 어려웠지만 2개를 같이 배우면서 어떻게 나뉘는지 알게 되었다.

3. 학습내용 및 예제

@ 수업내용이었던 flask와 fast api를 사용해 만든 앱에 대해 정리해보았다.
```
1) 프로젝트 개요
이 프로젝트는 FastAPI와 Flask를 활용한 웹 애플리케이션으로, 백엔드와 프론트엔드가 분리된 구조

2) 아키텍처
2.1) 전체 구조
- Backend (FastAPI)
  - API 서버
  - RESTful API 엔드포인트 제공
  - 데이터베이스 연동
- Frontend (Flask)
  - 웹 서버
  - 템플릿 기반 렌더링
  - jQuery를 활용한 동적 기능


3) 핵심 기능 상세 분석

3.1) 사용자 인증 시스템
- 백엔드 (FastAPI)

@app.post('/api/register')
def register_user(user: RegisterRequest, db:Session=Depends(get_db)):
    # 사용자 중복 체크
    existing_user = db.query(User).filter(
        User.username == user.username or User.email == user.email
    ).first()
    if existing_user:
        raise HTTPException(status_code=400, detail="이미 존재하는 사용자입니다.")
    
    # 새 사용자 생성
    new_user = User(
        username=user.username,
        email=user.email,
        password=user.password
    )
    db.add(new_user)
    db.commit()
    return {"success":True, 'message':'회원가입 성공', 'user_id':new_user.id}
```

- 프론트엔드 (Flask)

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        email = request.form.get('email')
        password = request.form.get('password')
        
        response = requests.post('http://localhost:8000/api/register', 
                               json={'username': username, 'email': email, 'password': password})
        
        if response.status_code == 200:
            return redirect(url_for('login'))
        return render_template('register.html', error='회원가입에 실패했습니다.')
    
    return render_template('register.html')

 

4. 18주차의 목표

KDT신청완료 / AWS 학습