<현상>
- REST API를 설계하던 중 form data가 POST방식에서는 정상 동작하지만 PUT에서는 동작하지 않는 현상을 발견
<내용>
- POST의 경우 idempotent 하지 않으며, 리소스의 위치를 지정하지 않을 경우 리소스를 새로 생성한다.
- PUT의 경우 idempotent 하며, 리소스의 위치를 명확히 지정하여 생성/수정을 위해서 사용한다.
- PATCH의 경우 idempotent 하며, 리소스의 위치를 명확히 지정하여 일부 속성을 수정하기 위해서 사용한다.
<확인>
- 현재 Servlet Spec에서 HTTP POST를 위해서는 form data를 사용하지만, HTTP PUT or PATCH에 대해서는 사용이 불가능하다.
아마도 수정기능을 위해서 support할 필요가 없다고 느껴서 일지도 모르겠지만 개발을 하다보면 불편한 점을 느끼게 된다.
<해결>
- Spring에서 다음과 같은 Class를 제공한다.
Class HttpPutFormContentFilter
이 필터는 'application/x-www-form-urlencoded' type의 HTTP PUT & PATCH request를 받아서 HTTP POST Request와 같은 형태로 이용할 수 있도록 form data를 만든다.
참고사이트
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6
http://docs.spring.io/spring/docs/current/javadoc-pi/org/springframework/web/filter/HttpPutFormContentFilter.html
https://1ambda.github.io/javascripts/rest-api-put-vs-post/
'Rest API' 카테고리의 다른 글
Spring Boot Application사용중 404 Not Found 발생 (0) | 2019.09.02 |
---|