REST API

SEAN·2025년 4월 23일

📘 REST란?

  • RESTRepresentational State Transfer의 약어
  • HTTP 기반의 웹 아키텍처 설계 스타일
  • 2000년 로이 필딩 박사의 논문에서 처음 소개됨

🧱 REST 구성 요소

구성 요소설명
자원(Resource)URI로 표현되는 대상 (예: /users, /posts)
행위(Method)HTTP 메서드 (GET, POST, PUT, DELETE 등)
표현(Representation)JSON, XML 등의 데이터 표현 방식

📚 API란?

  • API (Application Programming Interface): 시스템 간 상호작용을 위한 인터페이스
  • 내부 시스템이나 외부 서비스와 데이터를 주고받기 위한 통신 규약

🔑 API 유형

유형설명
Private API내부 시스템 간 통신용 API
Public API외부 서비스 제공용 API (예: 공공데이터, 날씨, 네이버 등)

🌐 REST API란?

  • REST 아키텍처 스타일을 따르는 API
  • URI로 자원을 명시하고, HTTP 메서드로 행위를 표현
  • 뷰 대신 JSON이나 XML 형식의 순수 데이터 전달

🧩 RESTful API 설계 원칙

  • URI는 명사를 사용
  • 계층 구조/로 표현
  • 언더바(_) 금지, 하이픈(-) 사용 가능
  • 대문자 금지, 확장자(.json, .xml 등) 포함 금지

📌 예시

기능URI메서드
게시글 목록 조회/boardsGET
게시글 등록/boardsPOST
게시글 단건 조회/boards/{id}GET
게시글 수정/boards/{id}PUT
게시글 삭제/boards/{id}DELETE

💡 RESTful이란?

REST의 제약 조건을 잘 지킨 API 디자인

✔ 특징

  • URI + HTTP Method 기반 설계
  • View 없이 JSON 등으로 응답
  • 플랫폼 독립성
  • 명확하고 간결함
  • 캐싱 가능

🌱 Spring에서 REST API 구현

📌 핵심 어노테이션

어노테이션설명
@RestController@Controller + @ResponseBody, JSON 응답
@RequestBody요청 본문을 객체로 매핑
@PathVariableURI 경로 일부를 변수로 추출
@GetMapping, @PostMapping, @PutMapping, @DeleteMappingHTTP 메서드 축약
@ResponseBody메서드 반환 값을 HTTP 본문에 포함

📦 Jackson

  • Spring 기본 JSON 변환 라이브러리
  • Java 객체 ↔ JSON 자동 변환 지원
  • 별도 설정 없이 사용 가능

📤 ResponseEntity

  • HTTP 응답을 직접 제어할 수 있는 클래스
@GetMapping("/user/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    User user = userService.findById(id);
    return ResponseEntity.ok(user); // 200 OK
}

✔ 주요 기능

  • .ok(body): 200 OK

  • .created(uri): 201 Created

  • .badRequest(): 400 Bad Request

  • .status(HttpStatus.X): 커스텀 응답


✅ 요약 정리

  • REST는 HTTP 기반 자원 중심 아키텍처
  • 자원은 URI로 표현하고, 행위는 HTTP 메서드(GET/POST/PUT/DELETE 등)로 구분
  • RESTful API는 명확하고 간결한 구조, 플랫폼 독립성, 캐싱 가능 등의 장점
  • Spring에서는 @RestController, @RequestBody, @PathVariable 등으로 REST 구현
  • Jackson을 통해 객체 ↔ JSON 자동 변환
  • ResponseEntity를 활용해 상태 코드, 헤더, 응답 본문을 유연하게 제어 가능
profile
성장하는 BE 개발자 입니다.

0개의 댓글