-
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) 을 넣으면 된다.
출처
http://jxck.hatenablog.com/entry/why-form-dosent-support-put-delete
http://haah.kr/2017/05/23/rest-http-method-in-html-form/
'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