728x90
반응형

RESTful API는 웹 개발자라면 반드시 알아야 할 핵심 기술입니다.


✅ REST란 무엇인가요?

**REST(Representational State Transfer)**는 2000년에 로이 필딩(Roy Fielding)이 논문에서 처음 제안한 아키텍처 스타일입니다.
쉽게 말해, 웹에서 자원을 HTTP 방식으로 다루는 표준화된 방법이라고 생각하시면 됩니다.


📌 REST의 6가지 핵심 제약조건

제약 조건설명
1. 클라이언트-서버 구조 역할을 분리하여 유지보수성과 확장성 향상
2. 무상태(Stateless) 요청 간 서버는 클라이언트 상태를 저장하지 않음
3. 캐시 처리 가능 응답 데이터는 캐싱될 수 있어야 함
4. 계층화 시스템 중간 서버를 통해 확장 구조 구성 가능
5. 인터페이스 일관성 URI, HTTP 메서드 등 통일된 사용법 준수
6. 코드 온 디맨드 (선택사항) 서버가 클라이언트에 스크립트 전송 가능
 

🧭 RESTful API란?

REST 원칙을 따르는 API를 말합니다. 즉, HTTP 메서드와 URL을 이용해 자원을 CRUD 방식으로 처리하는 것이죠.


🚀 RESTful API 예제

가상의 블로그 게시글(Post)에 대한 API를 설계한다고 가정해볼게요.

기능HTTP 메서드URI설명
목록 조회 GET /posts 모든 게시글 조회
단일 조회 GET /posts/{id} 특정 게시글 조회
작성 POST /posts 게시글 작성
수정 PUT /posts/{id} 게시글 전체 수정
삭제 DELETE /posts/{id} 게시글 삭제
 

🔄 RESTful 하지 않은 API 예시

GET /getPosts
POST /createPost
  • ❌ 이런 방식은 RESTful하지 않습니다.
  • ✅ RESTful 방식은 명사 중심 URI와 HTTP 메서드를 적절히 사용하는 것이 핵심입니다.

💡 RESTful API 설계 시 팁

  • URI에는 동사 대신 명사 사용
  • URI는 소문자 사용
  • 언더스코어(_)보단 하이픈(-) 사용 권장
  • 응답 상태 코드 (200, 201, 400, 404 등) 정확히 설정
  • 예외 응답은 JSON 형태로 일관되게 처리

🛠️ RESTful API 구현 프레임워크

  • Spring Boot (Java)
  • Express (Node.js)
  • Flask / Django REST Framework (Python)
  • FastAPI (Python, 최신 트렌드)
  • Laravel (PHP)
728x90
반응형
728x90
반응형

웹 개발에서 클라이언트와 서버 간 통신은 대부분 HTTP 메서드를 통해 이루어집니다.
특히 GET, POST, PUT, PATCH, DELETEREST API 설계의 핵심이라고도 할 수 있죠.

이 글에서는 각 메서드의 역할, 차이점, 사용 시 주의사항을 모두 정리해드립니다.


✅ GET

  • 목적: 데이터 조회
  • 특징:
    • URL 쿼리 파라미터 사용 (/users?name=kim)
    • 데이터 변경 없음
    • 캐시 가능, 브라우저 주소창에서 사용 가능
  • 사용 예시: 게시글 목록 조회, 유저 정보 조회 등

✅ POST

  • 목적: 데이터 생성 (Create)
  • 특징:
    • Body에 JSON, form 데이터 전송
    • 서버 상태를 변경함
    • 재요청 시 중복 생성 주의
  • 사용 예시: 회원가입, 글 작성, 댓글 등록

✅ PUT

  • 목적: 리소스 전체 수정 (Update All)
  • 특징:
    • 존재하지 않는 리소스는 새로 생성할 수도 있음
    • 전송 시 전체 필드 필요
  • 사용 예시: 게시글 전체 수정

✅ PATCH

  • 목적: 리소스 일부 수정 (Update Partial)
  • 특징:
    • 변경되는 필드만 Body에 포함
    • 서버 상태를 부분적으로 변경
  • 사용 예시: 유저 닉네임만 변경, 게시글 제목만 수정

✅ DELETE

  • 목적: 리소스 삭제
  • 특징:
    • 지정된 리소스를 제거
    • 요청 본문은 일반적으로 사용하지 않음
  • 사용 예시: 게시글 삭제, 회원 탈퇴

🧠 전체 요약 비교표

메서드목적요청 본문데이터 변경재요청 시 영향
GET 조회 없음 없음 영향 없음
POST 생성 있음 있음 중복 생성 주의
PUT 전체 수정 있음 있음 같은 결과 유지
PATCH 일부 수정 있음 있음 같은 결과 유지
DELETE 삭제 없음 있음 이미 삭제됨

 

728x90
반응형

+ Recent posts