RESTful API란
스프링 부트에서 RESTful API를 개발하는 것은 웹 애플리케이션의 핵심 구성 요소입니다. RESTful API는 HTTP 프로토콜을 기반으로 리소스(Resource)를 표현하고 조작하는 방식으로, 클라이언트와 서버 간의 데이터 교환을 표준화합니다. 이번 글에서는 RESTful API의 개념과 스프링 부트에서 이를 구현하기 위한 주요 어노테이션인 @RestController와 @RequestMapping에 대해 알아봅니다.
RESTful API 개념 이해
REST(Representational State Transfer)는 웹에서 리소스를 정의하고 주소(URL)를 통해 리소스를 관리하는 아키텍처 스타일입니다. RESTful API는 REST의 원칙을 따르는 API로, 주요 특징은 다음과 같습니다:
RESTful API의 주요 원칙
리소스(Resource) 기반 설계
- 리소스는 URI(Uniform Resource Identifier)로 식별됩니다.
- 예:
/users,/products,/orders
HTTP 메서드 사용
- HTTP 메서드는 리소스에 대한 작업을 정의합니다.
GET: 리소스 조회POST: 리소스 생성PUT: 리소스 전체 수정PATCH: 리소스 부분 수정DELETE: 리소스 삭제
- HTTP 메서드는 리소스에 대한 작업을 정의합니다.
무상태성(Statelessness)
- 서버는 클라이언트의 상태를 저장하지 않습니다. 요청마다 독립적으로 처리됩니다.
표현(Representation)
- 서버는 리소스의 상태를 JSON, XML, HTML 등의 형식으로 표현합니다. 일반적으로 JSON이 널리 사용됩니다.
@RestController와 @RequestMapping 사용법
스프링 부트에서는 RESTful API를 간단하게 구현할 수 있는 어노테이션을 제공합니다. @RestController와 @RequestMapping은 그중 핵심입니다.
1. @RestController
@RestController는 Spring MVC에서 RESTful 웹 서비스를 개발할 때 사용됩니다. 이 어노테이션은 클래스가 REST 컨트롤러임을 선언하며, 모든 메서드가 HTTP 응답의 본문에 직접 데이터를 반환하도록 처리합니다.
주요 특징
- 클래스 레벨에 적용되어 RESTful API 컨트롤러로 동작합니다.
- 모든 메서드에 자동으로
@ResponseBody가 적용됩니다. - 문자열, 객체, 컬렉션 등의 데이터를 JSON 형식으로 반환합니다.
예제
@RestController
public class HelloController {
@GetMapping("/api/hello")
public String sayHello() {
return "Hello, RESTful API!";
}
}
2. @RequestMapping
@RequestMapping은 특정 URI와 HTTP 메서드를 컨트롤러의 메서드에 매핑하기 위한 어노테이션입니다. 클래스 또는 메서드 레벨에서 사용할 수 있습니다.
주요 특징
- 클래스 레벨에서 공통 URI를 지정하고, 메서드 레벨에서 세부 URI와 HTTP 메서드를 지정합니다.
- HTTP 메서드를 명시적으로 지정하지 않으면 모든 HTTP 메서드에 대해 매핑됩니다.
주요 속성
value: 매핑할 URI를 지정합니다.method: HTTP 메서드(GET, POST, PUT, DELETE 등)를 지정합니다.produces: 반환 데이터의 콘텐츠 유형을 지정합니다(예:application/json).
결론
@RestController와 @RequestMapping은 스프링 부트에서 RESTful API를 구축하는 데 핵심적인 역할을 합니다. 이를 통해 효율적이고 표준화된 API를 쉽게 설계할 수 있습니다.
'SpringBoot' 카테고리의 다른 글
| Spring Boot: ResponseEntity를 활용한 응답 처리 (0) | 2024.11.13 |
|---|---|
| Spring Boot: HTTP 메서드와 매핑 (1) | 2024.11.12 |
| Spring Boot: 의존성 관리 - Starter 패키지 (0) | 2024.11.10 |
| Spring Boot: 의존성 관리 (2) | 2024.11.09 |
| 프로젝트의 기본 디렉토리 구조와 설정 파일 (0) | 2024.11.08 |