들어가기
혹시나 하는 마음으로 메모를 한다.
PUT, PATCH, DELETE 방식의 메소드를 지원하지 않는 브라우저가 있다고 하는데….
이를 위해 스프링 진영에서 HiddenHttpMethodFilter 라는 것을 제공한다.
HiddenHttpMethodFilter 맥락은 HiddenMethod(지원이 안되는 메소드명을 _method라는 이름에 담아서) + POST 요청을 스프링 컨트롤러에 전송하는 방법이다.
HiddenHttpMethodFilter 는 요청에서 _method 의 값을 필터링 해서 적절한 컨트롤러로 연결해주는 것 같다.
web.xml 설정
web.xml 에 아래 필터를 추가한다.
1 | <!-- Enables support for DELETE and PUT request methods with web browser clients --> |
화면단
회원을 삭제하는 요청을 아래처럼 만들수 있다.
중요한 것은 form의 method는 post이고, form 내부에 _method라는 이름에 delete 값을 갖는 input 태그가 있다.
위에서 말했듯이 아래 form을 전송하면 form method대로 post형식으로 리퀘스트가 스프링에게 전송된다.
hiddenHttpMethodFilter는 리퀘스트를 후킹해서 _mehtod 값을 읽어 그 내용과 일체하는 컨트롤러를 찾아 연결해준다.
1 | <form action="/sample/deleteUser" method="post"> |
마무리
사실 요즘 REST가 지원이 안되는 브라우저가 있는지는 모르겠다.
혹시나 해서….