Today I Learned

form에서 put, delete를 지원하지 않는 이유

c3epmos 2020. 1. 18. 15:06

왜 안될까?

 form을 사용해 DB 데이터를 사용하다보면 PUT, DELETE는 왜 지원하지 않는지 의문을 가질 수 있다. 보통 POST를 override 하는 방식으로 우회해서 사용하는데 왜 이렇게 해야만 하는지 그 이유를 조사해보았다.

 

 W3C에서 이와 관련된 논의를 진행한 적이 있는데 Ian Hickson이 “PUT을 form 메소드로 사용한다는 것은 말도 안 된다. 네가 form payload를 통해 PUT을 해야할 일은 없을 것이다. DELETE도 payload가 없어야만 말이 된다. 그러니 역시 form에서 제공할 이유가 없다.” 라는 반박으로 인해 초기 HTML5 draft에는 잠시 구현이 되었으나 다시 사라진 것 같다. draft에서 지원했던 것 또한 결국, HTML form을 우회해서 가능하도록 하는 확장 기능에 불과하다.

 

 DELETE에서 URI는 리소스를 정확하게 식별하고 요청을 보내기 때문에 form을 통해 값을 전달할 게 없으며, PUT도 전송해야할 것은 대상 리소스를 대체할 representation 그 자체인데, 대상 리소스더러 조각난 form 데이터를 처리하라고 보낼 수는 없는 노릇이다.

 

그렇다면 어떻게 사용할 수 있을까?

node.js 의 경우, method-override 모듈을 설치하고 form의 action url 끝에 _method = (DELETE / PUT) 을 넣으면 된다.

 

출처

http://jxck.hatenablog.com/entry/why-form-dosent-support-put-delete

 

なぜ html の form は PUT / DELETE をサポートしないのか? - Block Rockin’ Codes

注意 内容については一切保証しません。 ここでは、主に W3C ML での議論や各種仕様などに基づいて書いています。 ここに書かれていることが正しいかどうかは、自身で判断して下さい。 事実としておかしいところなどは、コメントでどんどん指摘して下さい。遠慮はいりません。 ただし、このエントリでは「form が PUT/DELETE をサポートするべきかどうか?」の議論はしません。 「REST の是非」や「PUT/DELETE の意義」についても議論する気はありません。 ここでやっているのは、あくまでもどういっ

jxck.hatenablog.com

http://haah.kr/2017/05/23/rest-http-method-in-html-form/

 

REST - HTML Form에서 GET/POST만 지원하는 이유

연재 목록 REST - 긴 여정의 시작 REST - HTML Form에서 GET/POST만 지원하는 이유 REST - 논문(요약) 훑어보기 REST - REST 좋아하시네 REST - Roy가 입을 열다 REST - 당신이 만든 건 REST가 아니지만 괜찮아 REST - 논문 읽기(To Do) HTML Form에서 GET/POST만 지원하는 이유쉬어가는

haah.kr

http://blog.naver.com/PostView.nhn?blogId=jdub7138&logNo=221049375308&categoryNo=136&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView

 

[NodeJS] PUT, DELETE, method-override

RESTful API의 7가지 패턴 중 변경된 정보를 업데이트하는 PUT method와 데이터를 삭제하는 DE...

blog.naver.com