2025-12-16

오늘 배운 것

📌 REST란?

REpresentational State Transfer

리소스를 URI로 표현하고, HTTP 메서드로 행위를 구분하는 설계 방식


🎯 핵심 설계 원칙

✅ 1. 자원(Resource)은 명사로, 행위는 HTTP 메서드로

GET    /users           → 사용자 목록 조회
GET    /users/{id}      → 특정 사용자 조회
POST   /users           → 사용자 생성
PUT    /users/{id}      → 사용자 전체 수정
PATCH  /users/{id}      → 사용자 일부 수정
DELETE /users/{id}      → 사용자 삭제

❌ /getUser, /deleteUser 이런 식으로 행위를 URI에 넣지 않기


✅ 2. URI는 리소스를 표현해야 한다

잘못된 예 개선된 예
/getUserInfo /users/{id}
/updateOrderStatus /orders/{id}/status
/saveFormData /forms (POST 요청으로 처리)

✅ 3. HTTP 메서드 의미 지키기

메서드 의미
GET 조회 (읽기 전용)
POST 생성
PUT 전체 수정 (대체)
PATCH 일부 수정
DELETE 삭제

❌ GET 요청에 Body 사용 ❌ (표준상 금지)


✅ 4. 상태코드로 처리 결과 표현하기

코드 의미
200 OK 정상 처리
201 Created 생성 완료 (POST)
204 No Content 삭제 완료 (응답 없음)
400 Bad Request 잘못된 요청
401 Unauthorized 인증 실패
403 Forbidden 권한 부족
404 Not Found 리소스 없음
500 Internal Server Error 서버 내부 오류

✅ 5. 에러 응답 포맷 통일

{
  "code": "USER_NOT_FOUND",
  "message": "해당 사용자를 찾을 수 없습니다."
}

✅ 프론트와 협업을 위한 일관된 에러 구조 중요


✅ 6. 계층적 URI 구조 + 관계 표현

GET /users/{userId}/orders       → 특정 사용자의 주문 목록
GET /articles/{id}/comments      → 특정 게시글의 댓글

리소스 간 관계는 URI로 계층 표현


✅ 7. 필터링/페이징/정렬은 쿼리 파라미터로

GET /users?page=1&size=10&sort=name,desc
GET /products?category=shoes&minPrice=10000

✅ 검색 조건, 정렬 등은 URI가 아닌 쿼리 파라미터로 처리


✅ 8. 응답 데이터 포맷은 명확하게

GET /users → Content-Type: application/json
  • 기본은 JSON 사용
  • 필요한 경우 XML, CSV 등도 지원 가능

🧠 RESTful한 API가 주는 이점

항목 설명
✅ 직관적인 URI 프론트 개발자와 협업이 쉬움
✅ HTTP 표준 준수 클라이언트/서버가 역할 분리
✅ 캐시, 로깅, 테스트 용이 Swagger, Postman에서도 바로 사용 가능
✅ 확장성 URI만으로 리소스 설계 명확하게 표현 가능

results matching ""

    No results matching ""