본문 바로가기
GD's IT Lectures : 기초부터 시리즈/스프링부트(Spring Boot) 기초부터 ~

[스프링 부트(SpringBoot)] RESTful API 개발 기초

by GDNGY 2023. 5. 3.

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)] 웹 개발 기초

 

 

 

반응형

댓글