Spring Boot & MySQL

1.5. REST API와 연동

backend 따라쟁이 2024. 12. 22. 23:28

Spring Boot는 RESTful API를 쉽게 작성할 수 있도록 지원하며, 이를 통해 클라이언트(웹 브라우저, 모바일 앱 등)와 데이터베이스 간의 데이터를 주고받을 수 있습니다. 이 섹션에서는 RESTful API의 개념과 Spring Boot에서 구현하는 방법을 설명합니다.


5.1 RESTful API란?

RESTful API는 HTTP 프로토콜을 기반으로 데이터를 주고받는 방식입니다. REST(Representational State Transfer)는 자원의 표현을 상태 변환 없이 클라이언트와 서버가 주고받는 구조를 의미합니다. RESTful API는 클라이언트와 서버 간의 상호작용을 간결하고 일관성 있게 만들어줍니다.

RESTful API의 주요 특징

  • HTTP 메서드 사용:
    • GET: 데이터 조회
    • POST: 데이터 생성
    • PUT: 데이터 수정
    • DELETE: 데이터 삭제
  • 자원의 표현:
    • URL을 통해 자원을 표현. 예: /users, /users/{id}
  • JSON 데이터 형식:
    • 데이터 요청 및 응답에 JSON 형식 사용이 일반적.

5.2 Spring Boot에서 REST API 작성

Spring Boot에서는 컨트롤러 클래스에 어노테이션을 사용하여 간단하게 RESTful API를 구현할 수 있습니다.

컨트롤러 기본 구조

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {
    // CRUD 메서드 구현
}
  • @RestController: 컨트롤러를 RESTful API로 설정.
  • @RequestMapping: 특정 URL 경로에 매핑.

5.3 데이터 조회 API (GET)

모든 사용자 조회

@GetMapping
public List<User> getAllUsers() {
    return userService.getAllUsers();
}
  • GET 요청: /users 경로로 모든 사용자 데이터를 조회.
  • 리턴 타입: List<User> 객체를 JSON 형식으로 반환.

특정 사용자 조회

@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
    return userService.getUserById(id);
}
  • @PathVariable: URL 경로에서 ID 값을 받아 처리.
  • GET 요청: /users/{id}로 특정 사용자를 조회.

5.4 데이터 생성 API (POST)

새로운 데이터를 생성하려면 POST 요청을 처리합니다.

사용자 생성

@PostMapping
public String addUser(@RequestBody User user) {
    userService.addUser(user.getName(), user.getEmail());
    return "User added successfully";
}
  • @RequestBody: 요청 본문에서 JSON 데이터를 받아 Java 객체로 변환.
  • POST 요청: 클라이언트에서 보낸 JSON 데이터를 기반으로 새로운 사용자를 생성.

요청 JSON 예제


5.5 데이터 수정 API (PUT)

기존 데이터를 수정하려면 PUT 요청을 사용합니다.

사용자 정보 수정

@PutMapping("/{id}")
public String updateUser(@PathVariable Long id, @RequestBody User user) {
    userService.updateUser(id, user.getName(), user.getEmail());
    return "User updated successfully";
}
  • PUT 요청: /users/{id}로 특정 사용자의 데이터를 수정.
  • 요청 JSON 예제:

 


5.6 데이터 삭제 API (DELETE)

데이터를 삭제하려면 DELETE 요청을 사용합니다.

사용자 삭제

@DeleteMapping("/{id}")
public String deleteUser(@PathVariable Long id) {
    userService.deleteUser(id);
    return "User deleted successfully";
}
  • DELETE 요청: /users/{id}로 특정 사용자의 데이터를 삭제.

5.7 전체 REST API 코드 예제

UserController.java

import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }

    @PostMapping
    public String addUser(@RequestBody User user) {
        userService.addUser(user.getName(), user.getEmail());
        return "User added successfully";
    }

    @PutMapping("/{id}")
    public String updateUser(@PathVariable Long id, @RequestBody User user) {
        userService.updateUser(id, user.getName(), user.getEmail());
        return "User updated successfully";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return "User deleted successfully";
    }
}

5.8 REST API 테스트

REST API가 정상적으로 동작하는지 테스트하려면 아래 방법을 사용합니다.

1. Postman

  • GET 요청: /users로 모든 사용자 조회.
  • POST 요청: /users로 JSON 데이터를 보내 사용자 생성.
  • PUT 요청: /users/{id}로 특정 사용자 수정.
  • DELETE 요청: /users/{id}로 특정 사용자 삭제.

2. cURL

# GET 요청
curl -X GET http://localhost:8080/users

# POST 요청
curl -X POST -H "Content-Type: application/json" -d '{"name":"John", "email":"john@example.com"}' http://localhost:8080/users

# PUT 요청
curl -X PUT -H "Content-Type: application/json" -d '{"name":"Jane", "email":"jane@example.com"}' http://localhost:8080/users/1

# DELETE 요청
curl -X DELETE http://localhost:8080/users/1

결론

Spring Boot에서 RESTful API를 작성하면 클라이언트와 서버 간 데이터를 쉽게 주고받을 수 있습니다. 이 섹션에서는 CRUD 작업을 위한 REST API를 작성하고, 이를 테스트하는 방법을 배웠습니다.

다음 섹션에서는 데이터 타입 변환과 오류 처리 방법을 다루겠습니다.