🚩[3단계-1] 내 프로젝트 맞춰 만들어보는 API 스펙

2025. 6. 9. 19:10·프로젝트

📈  [3단계-1] 내 프로젝트 맞춰 만들어보는 API 스펙


🚩 왜 API 스펙을 먼저 작성할까?


1. 📚 프론트엔드와 협업을 위한 '계약서'

  • 백엔드가 API를 어떻게 만들건지 먼저 정리해두는 거야.
  • 프론트는 이 스펙을 보고:
    • 어떤 URL로
    • 어떤 요청 데이터를 보내야 하고
    • 어떤 응답 데이터를 받을지
  • 미리 알 수 있어.

👉 즉, API 스펙 = 프론트랑 백엔드 사이 약속!


2. ⚡ 프론트엔드 개발이 '동시에' 가능

  • 프론트 개발자는 백엔드 완성 기다리지 않고
    mock 데이터(가짜 데이터)로 프론트 개발을 시작할 수 있어.
  • 백엔드 개발자는 이 스펙 기준으로 API를 만들면 되고.

👉 서로 독립적으로 개발, 프로젝트 전체 속도 엄청 빨라짐!


3. 🚀 초기 기획 오해 방지

  • 만들다가 "어? 이거 API에 없는데?"
  • "이거 데이터 빠졌는데?" 이런거 나오면 프로젝트 터짐.

미리:

  • 어떤 기능
  • 어떤 데이터 구조
  • 어떤 요청/응답 방식
  • 어떤 HTTP 메서드 (GET, POST, PATCH...)

이걸 다 정리해놓으면,
👉 처음부터 프론트, 백엔드, 기획팀이 같은 그림을 그리고 시작할 수 있어.


📚 요약

왜 해야 하나?이유
✅ 프론트-백 협업 기준서 API 요청/응답 형식 미리 정의
✅ 개발 동시 진행 가능 프론트는 스펙 보고 mock 개발, 백은 실제 API 개발
✅ 기획, 설계 오해 방지 개발 중 큰 수정/충돌 방지
 

💡 정리 한줄

👉 API 스펙은 프론트와 백엔드가 같은 언어로 말하게 해주는 '계약서'다.


그래서 지금 작성한 이 API 스펙을 프론트팀에 공유하면

🔥 "우리 이 스펙 기준으로 개발할게요!"

하고 바로 프론트 팀도 이 URL 기준으로 개발 들어가는 거야.

 

👉 필요 API 설계

1. 회원가입 (Signup)

  • 설명: 사용자 회원가입 처리
  • HTTP 메서드: POST /api/signup/

▶️ Request Body:

{
  "email": "user@example.com",
  "password": "password123",
  "nickname": "닉네임",
  "name": "홍길동",
  "phone_number": "010-1234-5678"
}

▶️ Response:

{
  "message": "회원가입이 완료되었습니다.",
  "user_id": 1
}

2. 로그인 (Login)

  • 설명: JWT 토큰 발급
  • HTTP 메서드: POST /api/token/

▶️ Request Body:

{
  "email": "user@example.com",
  "password": "password123"
}

▶️ Response:

{
  "access": "jwt-access-token",
  "refresh": "jwt-refresh-token"
}

3. 내 정보 조회 (My Profile)

  • 설명: 로그인 사용자 정보 조회
  • HTTP 메서드: GET /api/users/me/

▶️ Response:

{
  "id": 1,
  "email": "user@example.com",
  "nickname": "닉네임",
  "name": "홍길동",
  "phone_number": "010-1234-5678",
  "date_joined": "2025-06-09T12:00:00Z"
}

🔐 Access Token 필요


4. 내 정보 수정 (Update Profile)

  • 설명: 로그인 사용자 정보 수정
  • HTTP 메서드: PATCH /api/users/me/

▶️ Request Body:

{
  "nickname": "새로운 닉네임",
  "phone_number": "010-9876-5432"
}

▶️ Response:

{
  "message": "회원 정보가 수정되었습니다."
}

💰 Account API

5. 계좌 목록 조회 (List Accounts)

  • 설명: 사용자 계좌 목록 조회
  • HTTP 메서드: GET /api/accounts/

▶️ Response:

[
  {
    "id": 1,
    "account_number": "123-456-789",
    "bank_code": "004",
    "account_type": "자동인출",
    "balance": "100000.00",
    "created_at": "2025-06-09T12:00:00Z"
  }
]

6. 계좌 생성 (Create Account)

  • 설명: 새 계좌 생성
  • HTTP 메서드: POST /api/accounts/

▶️ Request Body:

{
  "account_number": "987-654-321",
  "bank_code": "004",
  "account_type": "준비금"
}

▶️ Response:

{
  "message": "계좌가 성공적으로 생성되었습니다.",
  "account_id": 2
}

💳 Transaction API

7. 결제내역 목록 조회 (List Transactions)

  • 설명: 계좌 결제 내역 조회
  • HTTP 메서드: GET /api/accounts/<int:account_id>/transactions/

▶️ Response:

[
  {
    "id": 1,
    "transaction_amount": "50000.00",
    "post_transaction_amount": "150000.00",
    "transaction_details": "급여",
    "transaction_type": "입금",
    "transaction_method": "이체거래",
    "transaction_timestamp": "2025-06-08T14:00:00Z"
  }
]

8. 결제내역 생성 (Create Transaction)

  • 설명: 계좌에 결제 내역 추가
  • HTTP 메서드: POST /api/accounts/<int:account_id>/transactions/

▶️ Request Body:

{
  "transaction_amount": "30000.00",
  "transaction_details": "ATM 인출",
  "transaction_type": "출금",
  "transaction_method": "ATM",
  "transaction_timestamp": "2025-06-09T15:30:00Z"
}

▶️ Response:

{
  "message": "결제 내역이 성공적으로 추가되었습니다.",
  "transaction_id": 5
}

📅 기본 ERD

User (CustomUser)
    └── Account (1:N)
           └── TransactionHistory (1:N)

 

'프로젝트' 카테고리의 다른 글

📚 회원 탈퇴(DELETE) 기능 정리 (10)  (0) 2025.06.10
🚩[3단계-1] Django 5.2 + DRF + Swagger (drf-spectacular) 적용 정리  (0) 2025.06.09
📌 [3단계] DRF(Django REST Framework) 설치 및 Docker 적용  (0) 2025.06.09
📮4. Django DB 연결 대기 커스텀 커맨드 제작 및 GitHub Actions 적용기  (0) 2025.06.09
📮 3. Django ORM을 활용하여 Model 생성하기  (1) 2025.06.09
'프로젝트' 카테고리의 다른 글
  • 📚 회원 탈퇴(DELETE) 기능 정리 (10)
  • 🚩[3단계-1] Django 5.2 + DRF + Swagger (drf-spectacular) 적용 정리
  • 📌 [3단계] DRF(Django REST Framework) 설치 및 Docker 적용
  • 📮4. Django DB 연결 대기 커스텀 커맨드 제작 및 GitHub Actions 적용기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (807)
      • Python (32)
      • 프로젝트 (116)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (42)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    homebartrend
    trumpmuskclash
    뷔
    gpterror
    travel ban
    smartphonedurability
    life reflection
    americaparty
    global politics
    btscomeback
    youngprofessionals
    titaniumcase
    classaction
    urbantrends
    college reunions
    btsjungkook
    bts
    self-growth
    RM
    newpoliticalparty
    remittance
    lawsuitculture
    btsdischarge
    americanlaw
    chatgpterror
    chinanightlife
    livebroadcast
    hotcoffeecase
    btsreunion
    basalcellcarcinoma
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
🚩[3단계-1] 내 프로젝트 맞춰 만들어보는 API 스펙
상단으로

티스토리툴바