이메일 인증을 처리하는 방식: @GetMapping 대신 @PostMapping 사용 이유

2025. 2. 19. 04:11WEB/SPRING

반응형

이메일 인증을 구현하면서, /email/verify 엔드포인트가 @GetMapping이 아닌 @PostMapping이어야 하는 이유를 알게 되었습니다. 처음에는 @GetMapping이 적합할 것이라고 생각했지만, 여러 이유로 @PostMapping을 사용하는 것이 더 적합함을 깨달았습니다. 이번 블로그에서는 그 이유를 정리해 보겠습니다.

1. 데이터 변경과 상태 변화

  • @GetMapping은 보통 서버의 상태를 변경하지 않고 데이터를 조회하는 요청에 사용됩니다. 하지만 이메일 인증은 사용자가 입력한 인증번호를 서버에서 검증하고, 그 결과에 따라 인증 상태를 변경하는 상태 변화가 발생하는 작업입니다.
  • 예를 들어, 인증이 성공하면 사용자의 계정 상태를 활성화해야 할 수도 있습니다. 이런 이유로 인증 처리 작업은 서버의 상태를 변경하는 요청이므로 POST 방식이 적합합니다.

2. 보안상의 이유

  • @GetMapping은 URL에 데이터를 포함시키는 방식으로 요청을 보냅니다. 예를 들어, 인증번호나 이메일 주소를 URL 파라미터로 전송하게 되면, URL에 민감한 정보가 그대로 노출될 수 있습니다.
  • 반면, @PostMapping은 데이터를 HTTP 요청 본문에 담아서 전송합니다. 이를 통해 이메일 인증번호와 같은 민감한 정보가 URL에 노출되지 않기 때문에, 보안상 더 안전한 방식입니다.

3. HTTP 메서드의 적합성

  • @GetMapping은 기본적으로 데이터를 조회하는 작업에 사용되며, 서버의 상태를 변경하지 않습니다. 그러나 이메일 인증은 사용자의 계정 상태에 영향을 미치는 상태 변경 작업이므로, POST 방식이 더 적합합니다.
  • POST 요청은 데이터를 전송하고 처리하는 작업에 적합하므로 인증과 같은 작업에 이상적입니다.

결론

이메일 인증을 처리하는 /email/verify 엔드포인트는 사용자의 인증 상태를 변경하고, 민감한 정보를 보호해야 하기 때문에 @PostMapping을 사용해야 합니다. @GetMapping은 데이터를 조회할 때 적합하지만, 상태 변경이나 보안이 중요한 작업에는 @PostMapping을 사용하는 것이 더 안전하고 적절합니다.

 

반응형