본문 바로가기
Back-End/SpringBoot

@GetMapping과 @PostMapping 차이점

by hoya7788 2024. 9. 6.

@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: 데이터를 보내는 요청 → 클라이언트가 서버로 데이터를 보내서 서버에서 자원을 생성합니다.