기술영역 : API
질문 : REST한 API에 대해서 자세히 설명
REST API : REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스
REST(REpresentational State Transfer) : HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식으로 GET, POST 등의 Method를 사용하여 요청을 보내며 요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현됨, CRUD 연산에 대한 요청을 할 때, 요청을 위한 Resource(자원, URI)와 이에 대한 Method(행위, GET, POST등) 그리고 Representation of Resource(자원의 형태, json)을 사용하면 표현이 명확해지므로 이를 REST라 하고, 이러한 규칙을 지켜서 설계된 API를 Rest API 또는 Restful한 API라고 함
RESTful API의 구성요소
REST의 특징
1. Uniform Interface(일관된 인터페이스) : Resource(URI)에 대한 요청을 통일되고 한정적으로 수행하는 아키텍처 스타일, 요청을 하는 클라이언트가 플랫폼(Android, Ios, Jsp 등)에 무관하며 특정 언어나 기술에 종속받지 않는 특징 이러한 특징 덕분에 HTTP를 사용하는 모든 플랫폼에서 요청이 가능하고 Loosely Coupling(느슨한 결함)형태를 갖게 됨
2. Stateless(무상태성) : 세션정보나 쿠키정보를 활용하여 작업을 위한 상태정보를 저장 및 관리하지 않음, 이러한 무상태성은 서비스의 자유도를 높이고 서버에 불필요한 정보를 관리하지않아 구현이 단순, 서버의 처리방식에 일관성을 부여하여 서버의 부담을 줄임
3. Cacheable(캐시 가능) : Rest API는 HTTP라는 기존의 웹표준을 그대로 사용하기 때문에 웹의 기존 인프라를 그대로 활용할 수 있음
4. Client-Server Architecture(클라이언트-서버 구조) : Rest API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당하며 역할을 확실히 구분시켜 서로간의 의존성을 줄임
5. Self-Descriptiveness(자체 표현) : Rest API는 요청 메세지만 보고도 이를 쉽게 이해할 수 있는 구조로 되어있음
6. Layered System(계층 구조) : Rest API의 서버는 다중 계층으로 구성될 수 있으며 보안, 로드밸런싱, 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있음
REST의 규칙
1. URI는 명사를 사용
2. 슬래시로 계층 관계를 표현
3. URI의 마지막에는 슬래시를 붙이지 않음
4. URI는 소문자로만 구성
5. 가독성이 떨어지는 경우 하이픈 사용