"자바 스프링에서 CRUD API를 만든다는 게 REST API를 이용해서 만든다라고 이해하면 되는 거야? 아니면 둘의 차이점이 있는 거야? 좀 세세하게 알고 싶다"라는 학교 동기의 말에 추상적인 개념은 알고 있지만 정말 명료하게 설명해 주고 싶다는 생각이 들어서 한번 알아보겠습니다!
1.CRUD API가 뭔데? 그리고 CRUD API를 만든다는게 뭔말이야?
- CRUD=> 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)를 의미하는 기능의 네 가지 작업을 의미합니다.
예를들어) 학생 정보를 관리하는 앱이라고한다면 아래의 예시들이 있을 수 있다.
Create (생성): 학생 정보를 새로 등록하는 작업입니다. 클라이언트가 새로운 학생 정보를 입력하여 서버에 전송하면, 서버는 해당 정보를 데이터베이스에 저장하고 새로운 학생의 아이디(ID)를 생성하여 반환한다.
Read (조회): 등록된 학생 정보를 조회하는 작업입니다. 클라이언트가 특정 학생의 아이디(ID)나 다른 조건을 전송하여 서버에 요청하면, 서버는 해당하는 학생 정보를 데이터베이스에서 조회하여 반환합니다.
Update (수정): 등록된 학생 정보를 수정하는 작업입니다. 클라이언트가 특정 학생의 아이디(ID)와 수정할 정보를 전송하여 서버에 요청하면, 서버는 해당 학생의 정보를 데이터베이스에서 찾아 수정하고 결과를 반환합니다.
Delete (삭제): 등록된 학생 정보를 삭제하는 작업입니다. 클라이언트가 특정 학생의 아이디(ID)를 전송하여 서버에 요청하면, 서버는 해당 학생의 정보를 데이터베이스에서 삭제하고 삭제 결과를 반환합니다.
CRUD가 이렇다는건 알아봤으니 이제 REST를 알아보자
REST는==> 웹에서 리소스(Resource)를 표현하고, 리소스에 대한 상태를 전달하며, HTTP 프로토콜을 기반으로 클라이언트와 서버 간 통신을 수행하는 아키텍처 스타일입니다.
예를들어 아래의 4가지가 대표적이다.
GET: 자원을 조회하고 읽기만을 요청합니다.
POST: 자원을 생성하기 위해 데이터를 제출합니다.
PUT: 자원을 업데이트 또는 생성하기 위해 데이터를 제출합니다.
DELETE: 자원을 삭제하기 위해 요청합니다.
그러면 RESTful API는 뭔가..?
RESTful API와 REST API는 일반적으로 동일한 의미로 사용되지만, RESTful API는 REST 원칙을 엄격하게 따르는 API를 의미한다.
그러면 이제 "CRUD API를 RESTful하게 짠다" 라는 의미는 해석해보면
==> CRUD API를 REST 원칙에 따라 디자인하라는 의미입니다. 즉, RESTful 한 CRUD API는 REST 원칙을 엄격하게 따르며, URI를 자원으로 표현하고, HTTP 메서드를 통해 자원을 만질 줄 알고, 페이로드와 응답 형식 등이 REST의 원칙에 맞게 설계되어야 합니다. 이렇게 RESTful 하게 디자인된 CRUD API는 표준화되고 간결한 API 디자인을 제공하며, 확장성과 유지 보수성을 높일 수 있습니다.