1. REST API란?
API(Application Programming Interface)는 서로 다른 프로그램이 기능이나 데이터를 주고받을 수 있도록 정해놓은 인터페이스이다.
웹에서는 클라이언트와 서버가 HTTP를 통해 데이터를 주고받는데, 이때 어떤 URL로 요청하고 어떤 데이터를 응답할지에 대한 규칙을 API로 정의할 수 있다.
REST API에서는 데이터를 중심으로 URL과 HTTP 메서드를 설계한다.
2. SSR과 CSR
웹 페이지를 어디에서 렌더링하느냐에 따라 크게 SSR과 CSR로 나눌 수 있다.
SSR(Server Side Rendering)
SSR은 서버에서 HTML을 만들어 클라이언트에게 전달하는 방식이다.
Spring Boot에서는 Thymeleaf를 이용한 방식이 대표적이다.
브라우저
↓ 요청
Spring Boot
↓ 데이터 처리
Thymeleaf
↓ HTML 생성
브라우저
↓
화면 출력
즉, 서버가 데이터뿐만 아니라 화면을 구성할 HTML까지 만들어서 전달한다.
CSR(Client Side Rendering)
CSR은 클라이언트에서 화면을 생성하는 방식이다.
React와 같은 프론트엔드 기술을 사용하는 경우가 대표적이다.
브라우저
↓ API 요청
Spring Boot
↓ JSON 데이터
브라우저
↓
React가 화면 생성
이 경우 Spring Boot는 화면을 직접 만들지 않고 필요한 데이터를 API로 제공하는 역할을 담당한다.
SSR과 CSR 비교
| 구분 | SSR | CSR |
| 의미 | Server Side Rendering | Client Side Rendering |
| 화면 생성 | 서버 | 클라이언트 |
| 대표 기술 | Thymeleaf | React, Vue 등 |
| 서버 역할 | 데이터 + HTML 제공 | 데이터 제공 |
| 응답 형태 | HTML 중심 | JSON 등 데이터 중심 |
| 프론트/백엔드 분리 | 상대적으로 어려움 | 분리하기 좋음 |
| 활용 | 서버 렌더링 웹 | 웹, 모바일 등 다양한 클라이언트 |
3. REST API에서는 데이터를 전달한다
CSR 방식에서는 프론트엔드와 백엔드가 서로 통신해야 한다.
이때 백엔드는 화면 자체를 전달하는 대신 데이터를 전달하고, 프론트엔드는 전달받은 데이터를 이용해 화면을 구성한다.
예를 들어 게시글 목록을 조회하는 API를 다음과 같이 만들 수 있다.
@GetMapping("/posts")
@ResponseBody
public List<Post> list() {
List<Post> postList = postService.findAll();
return postList;
}
기존 Thymeleaf 방식에서는 문자열을 반환하면 HTML 파일을 찾는다.
@GetMapping("/posts")
public String list() {
return "post_list";
}
반면 @ResponseBody를 사용하면 반환값을 HTTP 응답 본문(Response Body)으로 전달한다.
@GetMapping("/posts")
@ResponseBody
public List<Post> list() {
return postService.findAll();
}
따라서 List<Post> 객체가 JSON으로 변환되어 클라이언트에게 전달된다.
4. JSON이란?
JSON(JavaScript Object Notation)은 데이터를 표현하기 위한 형식이다.
REST API에서는 서버와 클라이언트가 데이터를 주고받을 때 JSON을 많이 사용한다.
예를 들어 Java의 Post 객체가 다음과 같다고 가정한다.
Post post = new Post();
서버에서 이 객체를 반환하면 클라이언트에서는 다음과 비슷한 JSON 형태로 전달받게 된다.
{
"id": 1,
"subject": "첫 번째 게시글",
"content": "게시글 내용"
}
Jackson
Jackson은 Java 객체와 JSON을 서로 변환해주는 라이브러리이다.
| 구분 | 변환 | 설명 |
| 직렬화 | Java 객체 → JSON | 서버의 데이터를 JSON으로 변환 |
| 역직렬화 | JSON → Java 객체 | 클라이언트의 JSON 데이터를 Java 객체로 변환 |
Spring Boot의 spring-boot-starter-web에는 Jackson이 기본적으로 포함되어 있기 때문에 일반적인 REST API에서는 별도로 추가하지 않아도 된다.
6. REST API URL 설계
REST API에서는 URL을 일관성 있게 설계하는 것이 중요하다.
기본적으로 동작을 나타내는 동사보다는 리소스를 나타내는 명사와 식별자를 사용하는 것이 좋다.
예를 들어 게시글을 조회한다면 다음과 같이 표현할 수 있다.
GET /posts
특정 게시글이라면 다음과 같이 표현할 수 있다.
GET /posts/1
댓글이라면 다음과 같이 리소스의 관계를 표현할 수 있다.
/posts/1/comments
REST API URL 작성 시 고려할 점
- 리소스를 중심으로 URL을 작성한다.
- 가능하면 명사를 사용한다.
- 식별자는 URL에 포함한다.
- URL 구조를 일관성 있게 유지한다.
- 일반적으로 snake_case보다는 일관된 URL 규칙을 사용하는 것이 좋다.
다만 HTTP 메서드(GET, POST, PUT, PATCH, DELETE)를 함께 고려해야 REST API 설계가 완성된다.
'BackEnd > Spring' 카테고리의 다른 글
| [Spring] Java Record란? DTO를 간결하게 만드는 방법 (0) | 2026.08.11 |
|---|---|
| [Spring] orphanRemoval (0) | 2026.08.11 |
| [Spring] Validation 오류 처리하기 - BindingResult 활용 (0) | 2026.08.11 |
| [Spring] Validation으로 입력값 검증하기 (0) | 2026.08.11 |
| [Spring] HTML Form을 이용해 게시글 작성하기 (0) | 2026.08.10 |
댓글