RESTful API는 어떤 뜻일까
RESTful API는 어떤 뜻일까
1. REST
아키텍처(Architecture) : 시스템의 구조나 동작을 위한 설계
REST : ‘Representational State Transfer’의 약자로, 애플리케이션 개발의 아키텍처 스타일입니다
API : ‘Application Programming Interface’의 약자로, ‘응용 프로그래밍 인터페이스’를 의미합니다
자세히 말하자면 프로토콜 등을 정의하여 상호 작용을 하기 위한 인터페이스 사양을 말합니다
- 자원(Resource) : HTTP URI (URI : Uniform Resource Identifier)
이 글의 주소인 ‘https://twotechside.github.io/posts/Restful/’ 에서 ‘/’는 계층 관계를 의미합니다 - 행위(Vern) : HTTP Method (Post, Get, Put, Delete 등)
- 표현(Representation) : HTTP Message, JSON, XML 등
처음 이 정의를 보게 되면 어려운 내용이라서 이해하기가 힘듭니다
CRUD 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 방식으로 Get, Post 등을 사용하여 요청을 보내는 것입니다
스프링이나 자바스크립트 등으로 CRUD를 사용해본 경험이 있다면 더 쉽게 이해할 수 있을만한 내용으로 보이겠네요
‘http://[ URL ]/[ URI ]’ 이 내용은 저희가 브라우저로 어딘가에 접속한다는 개념뿐만 아니라
서버에서 데이터를 가져오거나 또는 서버로 데이터를 전송하는 방법인 것으로도 이해할 수 있다는 것이죠
2. RESTful API
위에서 언급했던 REST는 아키텍처 스타일이므로 어떤 것은 해야하거나 하지 말아야하는 제약 조건이 따릅니다
다음 6가지 REST 설계 원칙을 준수하며 API를 개발하면 RESTful API라고 할 수 있겠습니다
- Client-Server(클라이언트-서버 구조)
- Stateless(무상태성)
- Cache(캐시 처리 기능)
- Uniform Interface(인터페이스 일관성)
- Layered System(계층 구조)
- Self-descriptiveness(자체 표현)
- 클라이언트와 서버는 분리되어야 하고
- 상태 정보를 따로 저장하지 않으며 누가 어디서 접근하든 결과는 무조건 동일해야 하고
- 캐싱 기능을 적용할 수 있어야 하고
- HTTP 표준인 URL과 응답코드 등을 사용하고 (아마 ‘404 오류창’을 보신 적이 있을겁니다)
- 계층 구조로 분리되어야 하고
- 별도 문서 없이 쉽게 이해할 수 있어야 한다
프로젝트를 만들면서 직접 CRUD를 사용하고 응답코드도 보내다가 다시 한 번 돌아보면
위에 작성했던 내용들이 하나씩 이해하기 쉬워질 것이라 믿습니다
This post is licensed under CC BY 4.0 by the author.