: REST는 Representational State Transfor라는 용어의 약자로 로이 필딩이라는 사람이 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 한다.
REST API란 REST를 기반으로 만들어진 API를 의미함
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST,GET,PUT,DELETE)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
CRUD Operation이란
: CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로 REST에서의 CRUD Operation 동작 예시는 다음과 같다.
Statless(무상태성)
: 작업을 위한 상태정보를 따로 저장하고 관리하지 않음. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됨. 때문에 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해짐.
Cacheable(캐시 처리 가능)
: HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용 가능함. 따라서 HTTP가 가진 캐싱 기능이 적용 가능함.
Server-Client(서버-클라이언트 구조)
Layered System(계층화)
Uniform Interface(인터페이스 일관성)
1) URI는 정보의 자원을 표현해야 한다.
2) 자원에 대한 행위는 HTTP Method(GET,POST,PUT,DELETE)로 표현한다.
회원 정보를 가져올 때는 GET, 회원 추가 시의 행위를 표현하고자 할 때는 POST Method를 사용하여 표현한다.
POST | - POST를 통해 해당 URI를 요청하면 리소스를 생성함< - (URL에 뜨지 않고) 숨겨서 뭔가 정보를 전달하거나 요청함. |
GET | - GET를 통해 해당 리소스를 조회함. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져옴 - URL을 입력해서 요청함 |
PUT | - PUT를 통해 해당 리소스를 수정함. |
DELETE | - DELETE를 통해 리소스를 삭제함. |
✅ 요청을 해도 원본 데이터의 변화를 가져오지 않아야 함.
✅ 브라우저 및 서버는 최대 URL 길이 제한이 있기 때문에 큰 데이터는 GET을 통해 전달할 수 없다.
✅ 요청 내용이 URL에 노출되므로 중요한 데이터를 담으면 심각한 보안 문제를 야기할 수 있다.
✅ 요청을 통해 CRUD가 이뤄질 수 있음(원본 파일의 수정 발생).
✅ 중요한 정보를 전달할 때, 전송 데이터의 양이 많을 때 적합.
👉 전송 길이에 제한이 없고, body에 데이터를 담아 전달하므로 기본적인 보안이 이뤄짐 (URL에 노출만 안 될 뿐 쉽게 확인 가능하긴 함)
- 비전공자를 위한 이해할 수 있는 IT지식
- https://meetup.toast.com/posts/92
- https://www.ibm.com/kr-ko/cloud/learn/rest-apis
- https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
- https://brunch.co.kr/@skykamja24/322
- 이미지 출처: https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80