-
form에서 put, delete를 지원하지 않는 이유Today I Learned 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) 을 넣으면 된다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersboard_string += "<form action='/boards/"+result[0].Board.boardIdx+"/likes?_method=DELETE' method='post'>" +"<input type='submit' value='cancel' name='submit'/></form>" 출처
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
[NodeJS] PUT, DELETE, method-override
RESTful API의 7가지 패턴 중 변경된 정보를 업데이트하는 PUT method와 데이터를 삭제하는 DE...
blog.naver.com
'Today I Learned' 카테고리의 다른 글
Sequelize를 이용한 대댓글 기능 구현 (1) 2020.01.21 form 기본값 주기 (0) 2020.01.21 sequelize include (0) 2020.01.18 hasMany와 belongsTo 차이점 (0) 2020.01.18 react session 보관 문제 (1) 2020.01.15