
0주차와 1주차에서 데이터베이스 설계와 쿼리 작성을 진행했다면,
이번 2주차에서는 설계한 데이터를 실제 서비스 API로 연결하는 과정을 다루었다.
이전 주차에서 ERD를 고민하는 과정 자체가
결국 API를 큰 틀에서 설계하는 과정이었다는 점이 인상적이었다.
이번 주차의 핵심은
API Endpoint 설계
요청(Request) / 응답(Response) 데이터 설계
그리고 이 모든 내용을 문서화한 것이 바로 API 명세서이다.
API는 단순히 “클라이언트와 서버를 연결하는 것”이 아니라,
복잡한 내부 로직을 감추고, 외부에서 쉽게 사용할 수 있도록 만든 인터페이스 라는 개념으로 이해하는 것이 더 정확함.
REST는 HTTP 기반의 아키텍처로,
자원(Resource) + HTTP Method 로 API를 설계함.
| Method | 역할 |
|---|---|
| GET | 조회 (변화 없음, 멱등성 O) |
| POST | 생성 / 처리 |
| PUT | 전체 수정 |
| PATCH | 부분 수정 |
| DELETE | 삭제 |
→ 같은 요청을 여러 번 보내도 결과가 같아야 하는 성질
| 구성 | 역할 |
|---|---|
| Path Variable | 특정 대상 지정 |
| Query Parameter | 조건 조회 |
| Request Body | 데이터 전달 |
| Request Header | 인증 및 메타 정보 |





이번 주차에서는
내가 설계한 ERD를 기반으로 실제 API 명세서를 작성해봤는데
Endpoint
GET /api/home/my
Header
Authorization: Bearer {accessToken}
Response
{
"nickname": "yujin",
"email": "test@example.com",
"phoneNumber": "01012345678",
"phoneNumberStatus": 1,
"userPoint": 12000
}
Endpoint
GET /api/home
Query
regionName=안암동&page=0&size=10
Response
{
"content": [
{
"missionId": 1,
"marketName": "안암 분식",
"point": 500,
"content": "떡볶이 먹기"
}
],
"page": 0,
"size": 10,
"hasNext": true
}
Endpoint
POST /api/review
Request
{
"marketId": 3,
"regionId": 1,
"stars": "FIVE",
"content": "맛있어요!"
}
Response
{
"reviewId": 10,
"message": "리뷰가 작성되었습니다."
}
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
}
Endpoint
POST /api/mission/completed
Request
{
"missionId": 12
}
Response
{
"message": "미션이 완료되었습니다."
}
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주차에서는