HTTP - HTML form이란?
HTML Form이란?
HTML 폼은 사용자가 웹 페이지에서 데이터를 입력하고 서버로 전송할 수 있게 하는 기본적인 요소이다. 주로 로그인, 회원가입, 검색 등 다양한 입력 작업에 사용된다. HTML 폼은 GET과 POST 두 가지 HTTP 메서드를 지원하며, 이 두 메서드를 통해 서버와 데이터를 주고받는다.
- GET 메서드: 입력된 데이터가 URL에 쿼리 스트링으로 추가되어 전송된다. 조회용 요청에 주로 사용되며, 데이터가 URL에 노출되기 때문에 중요한 정보를 전송할 때는 적합하지 않다. 또한, 전송할 수 있는 데이터의 양이 제한적이다.
- POST 메서드: 입력된 데이터가 HTTP 요청의 본문에 담겨 전송된다. 생성, 수정 등의 작업에 사용되며, URL에 데이터가 노출되지 않아 더 안전하다. 주로 폼을 통해 서버에 데이터를 안전하게 전달할 때 사용된다.
그러나 HTML 폼은 기본적으로 GET과 POST 외의 다른 HTTP 메서드(PUT, DELETE 등)를 직접적으로 지원하지 않는다. 이 문제를 해결하기 위해 컨트롤 URI와 method override 같은 기법이 자주 사용된다.
컨트롤 URI와 method override
HTML 폼이 GET과 POST만 지원하기 때문에, 다른 HTTP 메서드(PUT, DELETE)를 사용하려면 우회하는 방법이 필요하다. 이를 해결하기 위한 대표적인 방법이 method override이다.
method override는 폼에서 POST 메서드를 사용하지만, 서버에서 이를 PUT, DELETE 등으로 처리하도록 설정하는 방식이다. 예를 들어, 아래와 같은 코드를 보면
<form action="/resource/1" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="text" name="title">
<button type="submit">Update</button>
</form>
위 코드에서는 method="post"를 사용했지만, 서버는 숨겨진 필드에 있는 _method 값을 확인하여 실제로는 PUT 메서드로 처리하게 된다. 이를 통해 HTML 폼에서도 다양한 HTTP 메서드를 활용할 수 있다.
즉 이런 경우에는 controller를 사용하고 control resource를 사용해야한다. 보통 최대한 uri 는 resource를 활용하지만 이 경우는 control을 uri로 작동시킨다.
https://restfulapi.net/resource-naming/
resource name을 지을 때 위 사이트를 참고하면 유용하다.