REpresentational
State
Transfer
네트워크 아키텍쳐 원리모음 => 사이트 구성 원리
Controller
View를 활용해 화면을 주로 return
RestController
인터페이스 일관성을 제외하고는 HTTP에 적용되 있어서 이 부분을 신경쓰면된다.
=> URL주소만 보고도 동작을 알 수 있게
명사 : 리소스
동사 : 메소드
저 뿐만 아니라 주변의 많은 사람들이 수정기능에 대해 PUT Method를 많이 사용합니다.
그리고 PUT과 PATCH를 동일한 개념으로 생각했기 때문에 이 둘의 차이를 알아보자.
클라이언트가 리소스를 업데이트하는 데이터를 보내 이를 수정하는 방법입니다
Entity가 있는 경우 전체 Entity를 덮어쓰고 없는 경우는 새롭게 만듭니다
User 정보가
{
"name":"jeong",
"email":"jeong@asd.com"
}
이라고 하면
PUT 요청으로 다음을 보내면
{
"name":"lee"
}
결과는
{
"name":"lee",
"email":null
}
모든 리소스에대해 전달해 주지 않으면 빠진 데이터에 null값이 들어가게 된다
이 경우 부분 업데이트를 적용합니다
업데이트하려는 데이터만 전송하고 다른 데이터는 영향을 받지 않습니다
User 정보가
{
"name":"jeong",
"email":"jeong@asd.com"
}
이라고 하면
PATCH 요청으로 다음을 보내면
{
"name":"lee",
"data":"lee@asd.com"
}
결과는
{
"name":"lee",
"data":"jeong@asd.com",
"email":"jeong@asd.com"
}
PUT을 사용하면 리소스에 몇 가지 변경 사항만 적용해야 하는 경우 PATCH 방법에 비해 더 많은 대역폭을 소비합니다. 그러나 PATCH 방식을 사용할 때 일반적으로 서버에서 리소스를 가져오고 원본 파일과 새 파일을 비교하고 diff 파일을 만들어 전송하는 작업이 포함됩니다. 서버 측에서 서버는 diff 파일을 읽고 수정해야 합니다. 이것은 PUT 방식에 비해 많은 오버헤드를 수반합니다.
https://en.wikipedia.org/wiki/Patch_verb#Trade-offs_between_PUT_and_PATCH
브라우저, 서버 및 웹 애플리케이션 프레임워크에서 PATCH에 대한 지원은 보편적이지 않습니다. IE8, PHP, Tomcat, Django 및 기타 많은 소프트웨어에 대한 지원이 누락되었거나 중단되었습니다.