@GetMapping과 @PostMapping의 차이점
@GetMapping
과 @PostMapping
은 둘 다 Spring Framework에서 요청을 처리하기 위해 사용되는 어노테이션입니다. 둘 다 특정 URL에 대한 요청을 처리하지만, 그 방식에 차이가 있습니다.
1. @GetMapping
- HTTP GET 요청을 처리하기 위한 어노테이션입니다.
- 주로 데이터를 조회할 때 사용합니다.
- GET 요청은 쿼리 파라미터를 통해 데이터를 전달합니다. URL에 데이터가 노출되므로 보안에 민감한 데이터를 전송하는 데 적합하지 않습니다.
- GET 요청은 Idempotent합니다. 동일한 GET 요청을 여러 번 보내더라도 결과가 바뀌지 않습니다.
@GetMapping("/users")
public List<User> getUsers() {
// 사용자 목록을 반환하는 코드
}
2. @PostMapping
- HTTP POST 요청을 처리하기 위한 어노테이션입니다.
- 주로 서버에 데이터를 전송하거나 자원을 생성할 때 사용합니다.
- POST 요청은 HTTP Body를 통해 데이터를 전달합니다. 데이터가 URL에 노출되지 않아 보안에 적합합니다.
- POST 요청은 Non-Idempotent합니다. 동일한 POST 요청을 여러 번 보내면 결과가 달라질 수 있습니다.
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 사용자 정보를 받아 새로운 사용자를 생성하는 코드
}
요약
- @GetMapping: 데이터를 조회하는 데 사용, HTTP GET 요청, URL에 쿼리 파라미터로 데이터 전달
- @PostMapping: 데이터를 전송 및 자원 생성에 사용, HTTP POST 요청, Body에 데이터 전달
데이터를 받는지 보내는지
Spring Framework에서 @GetMapping
과 @PostMapping
은 각각 데이터를 받는지(조회하는지) 또는 보내는지(저장하거나 생성하는지)에 따라 구분됩니다.
1. @GetMapping: 데이터를 받는 요청
- GET 요청은 클라이언트가 서버에 데이터를 요청하는 방식입니다. 주로 서버에 저장된 데이터를 조회할 때 사용됩니다.
- 클라이언트는 서버에 필요한 정보를 쿼리 파라미터나 URL을 통해 요청하고, 서버는 그 요청에 맞는 데이터를 응답으로 보냅니다.
- 데이터를 받아오는 방식으로, 서버에서 데이터를 받는 용도입니다.
@GetMapping("/users")
public List<User> getUsers() {
// 서버에서 사용자 목록을 반환
return userService.getAllUsers();
}
2. @PostMapping: 데이터를 보내는 요청
- POST 요청은 클라이언트가 서버에 데이터를 보내는 방식입니다. 주로 서버에 새로운 자원을 생성하거나 데이터를 저장하는 데 사용됩니다.
- 클라이언트는 데이터를 HTTP Body에 포함하여 서버로 전송하고, 서버는 그 데이터를 기반으로 새로운 정보를 저장하거나 처리합니다.
- 클라이언트는 데이터를 서버로 보내고, 서버는 그 데이터를 처리하여 자원을 생성합니다.
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// 클라이언트로부터 받은 사용자 데이터를 기반으로 새로운 사용자를 생성
return userService.saveUser(user);
}
요약
- @GetMapping: 데이터를 받는 요청 → 클라이언트가 서버로부터 데이터를 요청하고 받습니다.
- @PostMapping: 데이터를 보내는 요청 → 클라이언트가 서버로 데이터를 보내서 서버에서 자원을 생성합니다.