Post

2일차 Spring Boot + JPA로 REST API 만들기

2일차 Spring Boot + JPA로 REST API 만들기

✅ 오늘 구현한 기능

Spring Data JPA를 이용해 사용자(User) 데이터를 다루는 CRUD REST API를 만들어봤다.

MethodURL설명
GET/users전체 사용자 조회
POST/users사용자 등록
PUT/users/{id}사용자 정보 수정
DELETE/users/{id}사용자 삭제

📁 controller/UserController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@RestController
@RequestMapping("/users")
public class UserController {

    private final UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

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

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        return userRepository.findById(id)
                .map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User updatedUser) {
        return userRepository.findById(id)
                .map(user -> {
                    user.setName(updatedUser.getName());
                    user.setEmail(updatedUser.getEmail());
                    return ResponseEntity.ok(userRepository.save(user));
                })
                .orElse(ResponseEntity.notFound().build());
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        if (userRepository.existsById(id)) {
            userRepository.deleteById(id);
            return ResponseEntity.noContent().build();
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}

🧪 테스트 예시 (Postman)

사용자 등록 (POST /users)

1
2
3
4
{
  "name": "김철수",
  "email": "chulsoo@example.com"
}

사용자 수정 (PUT /users/1)

1
2
3
4
{
  "name": "김영희",
  "email": "younghee@example.com"
}

🔚 마무리

오늘은 REST API 기본 기능인 CRUD를 전부 구현해봤다.
처음엔 어색했지만, 하나씩 만들어보니까 JPA가 왜 많이 쓰이는지 조금은 알 것 같기도 하다.

다음엔 예외 처리, 유효성 검증, Swagger 적용 같은 것도 붙여보면서 더 확장해보자.

Repository : GitHub

This post is licensed under CC BY 4.0 by the author.