CRUD
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용된다.
DBMS
DBMS란 Database Management system의 준말로 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램이다. 공유 저장소(서버)를 구축하고 사용자들에게 접근정보를 공유하여 데이터를 처리할 수 있는 인터페이스를 제공하고 복구기능과 보안성 기능 또한 제공한다.
REST API
- REST는 REpresentational State Tranfer의 줄임말이다.
- 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.
자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 규칙
REST의 필요성
1. 시스템 분산
큰 규모의 애플리케이션을 구조적으로 분리할 수 있게 되었다. RESTfull API를 지켜주기만 하면 상호간 통신이 가능해졌다.
2. 다양한 클라이언트에 대응
RESTfull API를 통해 데이터만 주고 받기 때문에 전송되는 데이터가 가벼워졌다. 따라서 다양한 종류의 클라이언트에 대응이 가능하다.
(예컨데 iOS나 android의 어플리케이션 그리고 데스크탑 브라우저)
PUT & PATCH
Update의 경우 PUT과 PATCH 두 가지 매서드가 존재하는데, 두 방법 모두 한 Location에서 리소스를 업데이트하는 역할을 하지만 방식이 다르다. 여기서 말하는 '한 Location에서 리소스를 업데이트'란 무엇을 뜻하는 것일까?
HTTP Request 대상을 "resource(리소스)"라고 부르는데, 리소스는 문서, 사진 그 어떤 객체든 될 수 있으며 각 리소스는 HTTP 전체에 사용되는 URI(Uniform Resource Identifier)에 의해 식별된다. 웹에서 리소스에 대한 식별과 위치는 대부분 단일 URL(Uniform Resource Locator, URI의 한 종류)로 제공된다. 우리는 여기서 URL 개념만을 이용해 설명하고자 한다.
인터넷이 거리이고, 거리의 주택은 조립식이며 주택 주소는 URL이라고 가정해본다. 또한, 거리는 숫자로 구별되는 구역으로 이루어져있고, 구역 당 주택이 있어 주택1은 구역1(plot-1)에 있다.
조립식 주택이 있는 https://internet-street.com/plot-1에 PUT 요청을 하면 "plot-1로 표시된 위치에 이 집을 PUT하세요"라는 의미이다. 해당 명령은 지정된 위치에 대한 거리를 검색하고 해당 위치의 내용을 바꾼다. 해당 위치에서 아무것도 발견되지 않으면 해당 위치에 리소스를 PUT한다. 이 경우의 주택은 모든 구조를 포함하는 완전한 조립식 주택이어야 한다.(즉, 주택의 바꿀 부분만 작성하면 안된다. 바꿀 부분을 포함한 주택의 전체 구조를 넣어주어야한다.) 따라서 PUT 요청에는 항상 전체 리소스가 포함된다. 이는 PUT 요청의 필수 조건이 멱등성(같은 요청을 여러번 수행하더라도 동일한 결과를 생성하는 성질)이기 때문이다.
출처- https://doqtqu.tistory.com/
1. PUT
HTTP PUT 메서드는 요청 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체합니다.
2. PATCH
HTTP PATCH 메소드는 리소스의 부분적인 수정을 할 때 사용됩니다.
실제 요청시 코드를 보면서 파악해보자
PUSH
PATCH
요청한 URL 자원이 존재하지 않을 때는 어떨까?
멱등성 관점
멱등성을 가지지 못하는 PATCH 예시
만약 위의 리소스를 /customers URI를 통해 접근하는 것으로 가정하고 PUT, PATCH 요청을 /customers에 보내게 되면 어떨까? (요청을 두 번 보낸다고 가정해보고 결과를 보자)