6. RESTful API 개발 기초
6.1. RESTful API 소개
REST(REpresentational State Transfer)는 웹 서비스를 설계할 때 사용되는 아키텍처 스타일입니다. RESTful API는 REST 원칙을 따르는 웹 서비스 API를 의미합니다. 웹 서비스는 클라이언트와 서버 간의 통신을 제공하는데, RESTful API는 그러한 웹 서비스를 구축하는 방법 중 하나입니다.
RESTful API의 핵심 원칙은 다음과 같습니다.
- 자원 지향: 각 자원(데이터 객체)에는 고유한 식별자가 있어야 하며, 이를 URI(Uniform Resource Identifier)로 표현합니다.
상태를 전달하는 메시지: 클라이언트와 서버 간의 상태 전달을 표현하기 위해 HTTP 메서드와 상태 코드를 사용합니다. - 캐시 가능: 서버 응답은 클라이언트에서 캐시 될 수 있어야 하며, 이를 통해 성능과 확장성을 향상할 수 있습니다.
- 무상태: 각 요청은 서버에서 처리될 수 있는 모든 정보를 포함해야 하며, 클라이언트의 이전 요청과 관련이 없어야 합니다.
6.2. 스프링 부트에서의 RESTful API 개발 기초
스프링 부트에서는 @RestController 어노테이션을 사용하여 RESTful API를 쉽게 구현할 수 있습니다. @RestController는 @Controller와 @ResponseBody 어노테이션의 조합으로, 컨트롤러의 메서드가 반환하는 값이 HTTP 응답 본문에 직접 쓰입니다. 이를 통해 JSON, XML 등 다양한 형식의 데이터를 쉽게 반환할 수 있습니다.
예를 들어, 간단한 사용자 관리 API를 구현해봅시다.
먼저 사용자 엔티티를 생성합니다.
public class User {
private Long id;
private String name;
private String email;
// 생성자, getter, setter 등
}
그리고 RESTful API를 구현하는 컨트롤러를 작성합니다.
@RestController
@RequestMapping("/api/users")
public class UserController {
private final List<User> users = new ArrayList<>();
// 사용자 목록 조회
@GetMapping
public List<User> getUsers() {
return users;
}
// 사용자 상세 조회
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return users.stream()
.filter(user -> user.getId().equals(id))
.findFirst()
.orElseThrow(() -> new NotFoundException("User not found"));
}
// 사용자 생성
@PostMapping
public User createUser(@RequestBody Useruser) {
users.add(user);
return user;
}
// 사용자 수정
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
User user = users.stream()
.filter(u -> u.getId().equals(id))
.findFirst()
.orElseThrow(() -> new NotFoundException("User not found"));
user.setName(updatedUser.getName());
user.setEmail(updatedUser.getEmail());
return user;
}
// 사용자 삭제
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
users.removeIf(user -> user.getId().equals(id));
}
}
이 코드는 간단한 사용자 관리 API를 구현한 것입니다. `@RestController`를 사용하여 RESTful API를 쉽게 작성할 수 있습니다. `@RequestMapping`을 사용해 해당 컨트롤러의 기본 URI를 설정하고, `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping` 등의 어노테이션을 사용하여 각 HTTP 메서드에 따른 동작을 정의할 수 있습니다.
이렇게 작성된 API는 클라이언트와 서버 간의 데이터 교환을 쉽게 할 수 있으며, 다양한 클라이언트(웹, 모바일 등)에서도 동일한 API를 사용하여 통신할 수 있습니다.
2023.05.03 - [프로그래밍/스프링부트(Spring Boot) 기초부터 ~] - [스프링 부트(SpringBoot)] 웹 개발 기초
'GD's IT Lectures : 기초부터 시리즈 > 스프링부트(Spring Boot) 기초부터 ~' 카테고리의 다른 글
[스프링 부트(SpringBoot)] 테스트 기초 (0) | 2023.05.03 |
---|---|
[스프링 부트(SpringBoot)] 간단한 보안 적용 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 웹 개발 기초 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 데이터베이스 연동 기초 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 스프링 부트의 핵심 기능 (0) | 2023.05.03 |
댓글