[HTTP METHOD] PUT vs PATCH 차이점

2018. 4. 12. 17:23IT개발/기타

반응형

HTTP 메소드 중 PUT 과 PATCH가 있다. 뭔 차이여...

 

결론

PUT : 자원의 전체 교체, 자원교체 시 모든 필드 필요

       (만약 전체가 아닌 일부만 전달할 경우, 

        전달한 필드외 모두 null or 초기값 처리되니 주의!!)

PATCH : 자원의 부분 교체, 자원교체시 일부 필드 필요

 

용도에 맞게 쓰자. 우린 PUT을 쓰려고 했는데 유지보수 관점에서 개발자의 실수(원치않는 데이터 초기화)를 방지하고자 PATCH만 쓰기로 결정하였다.

신입 개발자 또는 헷갈릴 여지를 주지않기 위해 추후 코딩컨벤션에 이또한 정의를 해야겠다. 그러면 용도에 맞게 PUT을 자유자재로 쓰면 되지않겠는가 

 

본론

예) 아래와 같이 user entity가 있다고 하자. 이상태에서 나이만 20 으로 변경하는 요청을 할때, PUT 잘못쓰면 골로간다잉~

  PUT(잘못된 예시)  PUT(잘된 예시)   PATCH(대안 예시)
원본

json
====== User Entity =====
{   
 "name" : "김철수", // 이름
 "age": 18 // 나이
}
요청

json
PUT /api/user/225813
{   
 "age": 20
}

PUT /api/user/225813
{  
 "name" : "김철수",
 "age": 20
}
 PATCH /api/user/225813
{   
 "age": 20
}

결과

json
 {   
 "name" : null, // ???? 뭥미
 "age": "20
}
 {    
"name" : "김철수",

 "age": "20
}
 {    
"name" : "김철수",

 "age": "20
}

 

 

참고자료 

HTTP 요청/응답 스펙 간략히 이해하기 : https://blog.outsider.ne.kr/888

PUT 스펙 :  https://tools.ietf.org/html/rfc2616#section-9.6

PATCH 스펙 : https://tools.ietf.org/html/rfc2068

Spring 예제 : http://www.baeldung.com/http-put-patch-difference-spring

 

반응형