<현상>

- 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

+ Recent posts