POST는 일반적으로 데이터를 서버에 전송할 때 사용된다. 예를 들어, 사용자가 로그인 정보나 신용카드 정보를 입력하는 폼이 있다면, 이 정보는 대게 POST 방식으로 서버에 전송된다.
HTTP POST 요청은 HTTP 요청 헤더와 함께 서버로 데이터를 전송하게 되는데, 이 데이터는 요청 본문(body)에 포함되며, 일반적으로 HTML 폼(form)으로부터 전송된다. 따라서 @RequestBody 어노테이션이 사용 가능한 것이다.
요청 본문은 일반적으로 URL에는 표시되지 않기때문에 POST 방식이 GET 방식보다 보안이 높은 편이다.
또한, POST 방식은 데이터의 길이에 제한이 없다. 따라서 대용량의 데이터를 서버에 전송할 때 유용하다.
하지만, POST 방식으로 데이터를 전송할 때는 반드시 서버에서 데이터를 처리할 수 있는 방법을 제공해야 한다.
서버에서는 POST 요청을 받아들이고, 요청 본문의 데이터를 읽어 처리할 수 있도록 작업이 되어있어야 프로그램이 동작한다.
참고
content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다. GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 데이터를 전달할 때는 HTTP 메시지 바디를 사용하지 않기 때문에 content-type이 없다. POST HTML Form 형식으로 데이터를 전달하면 HTTP 메시지 바디에 해당 데이터를 포함해서 보내기 때문에 바디에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해야 한다. 이렇게 폼으로 데이터를 전송하는 형식을 application/x-www-form-urlencoded 라 한다.