UMC 10기 - Spring Boot 스터디 #2. API 설계와 API 명세서 작성

정유진·2026년 3월 24일
post-thumbnail

2주차 개념 요약


0주차와 1주차에서 데이터베이스 설계와 쿼리 작성을 진행했다면,
이번 2주차에서는 설계한 데이터를 실제 서비스 API로 연결하는 과정을 다루었다.

이전 주차에서 ERD를 고민하는 과정 자체가
결국 API를 큰 틀에서 설계하는 과정이었다는 점이 인상적이었다.

이번 주차의 핵심은

API Endpoint 설계
요청(Request) / 응답(Response) 데이터 설계

그리고 이 모든 내용을 문서화한 것이 바로 API 명세서이다.


API란?

API는 단순히 “클라이언트와 서버를 연결하는 것”이 아니라,
복잡한 내부 로직을 감추고, 외부에서 쉽게 사용할 수 있도록 만든 인터페이스 라는 개념으로 이해하는 것이 더 정확함.


REST API

REST는 HTTP 기반의 아키텍처로,
자원(Resource) + HTTP Method 로 API를 설계함.


HTTP Method 핵심

Method역할
GET조회 (변화 없음, 멱등성 O)
POST생성 / 처리
PUT전체 수정
PATCH부분 수정
DELETE삭제

멱등성 (Idempotency)

→ 같은 요청을 여러 번 보내도 결과가 같아야 하는 성질


RESTful 설계 핵심 규칙

  • URI에 동사 사용 ❌
  • 자원은 복수형
  • 계층 구조 표현 가능
  • 필요 시 Path Variable 사용

API 구성 요소

구성역할
Path Variable특정 대상 지정
Query Parameter조건 조회
Request Body데이터 전달
Request Header인증 및 메타 정보



핵심 키워드


#1. RESTful API란?

#2. 멱등성이란?

#3. HTTP 메서드 종류



미션과제 - API 명세서 작성


이번 주차에서는
내가 설계한 ERD를 기반으로 실제 API 명세서를 작성해봤는데


1. Home 마이데이터 조회

Endpoint
GET /api/home/my

Header
Authorization: Bearer {accessToken}

Response

{
  "nickname": "yujin",
  "email": "test@example.com",
  "phoneNumber": "01012345678",
  "phoneNumberStatus": 1,
  "userPoint": 12000
}



2. Home 지역 미션 조회

Endpoint
GET /api/home

Query

regionName=안암동&page=0&size=10

Response

{
  "content": [
    {
      "missionId": 1,
      "marketName": "안암 분식",
      "point": 500,
      "content": "떡볶이 먹기"
    }
  ],
  "page": 0,
  "size": 10,
  "hasNext": true
}



3. 리뷰 작성

Endpoint
POST /api/review

Request

{
  "marketId": 3,
  "regionId": 1,
  "stars": "FIVE",
  "content": "맛있어요!"
}

Response

{
  "reviewId": 10,
  "message": "리뷰가 작성되었습니다."
}



4. 미션 목록 조회

Endpoint
GET /api/mission

Query

regionName=안암동&page=0&size=10

Response

{
  "content": [
    {
      "missionId": 3,
      "marketName": "치킨집",
      "point": 1000,
      "status": "in_progress"
    }
  ],
  "page": 0,
  "size": 10,
  "hasNext": false
}



5. 미션 완료

Endpoint

POST /api/mission/completed

Request

{
  "missionId": 12
}

Response

{
  "message": "미션이 완료되었습니다."
}



6. 회원가입

Endpoint
POST /api/signup

Request

{
  "name": "홍길동",
  "gender": "FEMALE",
  "birth": "2002-05-10",
  "addressLine1": "서울",
  "addressLine2": "안암동",
  "email": "test@test.com",
  "phoneNumber": "01012345678",
  "type": "kakao",
  "agreeId": 1
}

Response

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



📌 마무리


이번 2주차에서는
단순히 DB를 설계하는 것을 넘어,

★ 데이터를 어떻게 API로 노출할 것인지
★ 프론트와 어떻게 소통할 것인지

까지 고민해보는 과정이었습니다.

또한 API 명세서를 작성하면서 단순히 기능 구현이 아니라
“다른 개발자가 이해할 수 있는 구조”로 만드는 것이 중요하다는 점을 깨달았다.



다음 3주차에서는

  • Spring Boot에서 실제 API를 구현하고
  • 컨트롤러와 서비스 계층을 통해
  • 지금 설계한 API를 코드로 연결하는 과정을 학습하게 된다.



profile
개발전공 대학생

0개의 댓글