멱등성이란 여러번 수행해도 결과가 같음을 의미한다.
HTTP 메소드를 예를 들자면, GET, PUT, DELETE는 같은 경로로 여러 번 호출해도 결과가 같다.
그러나 POST는 매 호출마다 새로운 데이터가 추가된다.
따라서, POST 연산은 결과가 Idempotent하지 않지만, PUT은 반복 수행해도 그 결과가 Idempotent 하다.
PATCH와 PUT은 둘 다 데이터의 수정을 위한 method이다.
그렇다면 두가지는 어떤 차이점이 있을까?
PATCH, which is used to apply partial modifications to a resource
- 리소스에 부분 수정을 적용하는 데 사용됩니다.
PUT method requests that the state of the target resource be created or replaced with the state defined by the representation enclosed in the request message payload
- 메서드는 대상 리소스의 상태를 생성하거나 요청 메시지 페이로드에 포함된 표현으로 정의된 상태로 바꾸도록 요청합니다.
예를 들어, PUT 요청 시 요청을 일부분만 보낸 경우 나머지는 default 값으로 수정되는 게 원칙이므로,
바뀌지 않는 속성도 모두 보내야 한다.
(만약 전체가 아닌 일부만 전달할 경우, 전달한 필드외 모두 null 혹은 default 값처리되니 주의해야한다.)
예를 들어, PUT HTTP 메소드로 어떠한 데이터를 변경하고자 할때
수정된 값만 보낼 경우, 보내지 않은 다른 데이터는 null로 변경되어 버린다.
그러나 PATCH를 이용하여 변경하려는 데이터의 요청을 보내면,
새롭게 바뀐 부분만 반영되며 나머지는 기존의 데이터가 유지된다.
따라서 자원의 일부를 수정할 때는 PATCH를, 전체적인 수정이 필요할 때는 PUT을 이용하는 것이 적절하다.
게시글 수정에서 나는 PATCH를 사용하기로 했다.
또한 업데이트 시에 모든 데이터를 받아오기 보다는 null이 아니고 값이 들어온 데이터만 SET 해줄 수 있는 동적 쿼리에 대한 필요성도 더불어 느끼게 되었다.
게시판마다 받아오는 input 데이터가 다르다 보니 필요한 데이터만 받는다면 서버의 부하를 확연히 줄일 수 있을 것이었다.
prifix = trim 안에있는 모든 문자열의 앞에 붙여줄 문자열을 입력하는 곳
suffixOverrides = trim 안에있는 모든 문자열의 조건문을 판별해서 입력된 문자열의 맨 끝에서부터 찾아서 지워줄 문자열을 입력하는 곳