1. REST란?
REST란 Representational State Transfer의 약자로 자원을 이름으로 구분하여 자원의 상태를 주고받는 것을 의미한다. HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 행위를 적용한다.
1-1. REST 구성요소
- 자원(Resource) : HTTP URI - 서버는 고유한 리소스 식별자로 각 리소스를 식별
- 행위(Verb) : HTTP Method (GET, POST, PUT, DELETE)
- 내용(Representations) : HTTP Message Pay Load - 하나의 자원은 JSON,XML, TEST, RSS 등 여러 형태의 Representaion으로 나타내어질 수 있다.
1-2. REST의 특징
- Stateless (무상태성) - 서버가 이전의 모든 요청과 독립적으로 클라이언트 요청을 완료함을 의미
- Cacheable(캐쉬 가능성) - 일부 응답을 저장하는 프로세스인 캐싱을 지원함을 의미
- Layered System (계층화) - 클라이언트는 REST API Server만 호출하지만, 클라이언트 요청을 이행하기 위해 함께 작동하는 비즈니스 로직(보안, 암호화 등)을 여러 계층으로 실행될 수 있도록 유연하게 설계 가능함을 의미
- Uniform Interface (균일한 인터페이스) - 서버가 표준 형식으로 정보를 전송함을 의미
1-3. 장점
- HTTP 프로토콜을 그대로 사용하기에 별도 인프라를 구축할 필요가 없음
- HTTP 프로토콜을 따르는 모든 플랫폼에서 사용 가능
- API의 의도를 쉽고 명확하게 파악 가능
- 클라이언트, 서버를 완전히 분리하기에 각 부분이 독립적으로 발전 가능
- 사용되는 기술과 독립적이기에 API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 작성이 가능
1-4. 단점
- 표준이 존재하지 않아 정의가 필요함
- HTTP Method 형태가 제한적
2. RESTful API란?
REST 아키텍쳐를 따르는 API를 RESTful API (Representaional state transfer API)라고 하며 REST 아키텍처를 구현하는 웹서비스를 RESTful 웹 서비스라고 한다. REST는 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어 졌으며, 대규모의 고성능 통신을 안정적으로 지원할 수 있고 쉽게 구현 및 수정할 수 있어 파악에 용이하고 여러 시스템에서 사용이 가능하다.
3. RESTful API 설계
- 동사 보다는 명사, 대문자보다 소문자 사용
/getArticles/1 -> /articles/1
- 컬렉션 이름으로는 복수 명사 사용
/article/1 -> /articles/1
- HTTP Method를 포함하지 않음
/get/articles/1 -> GET /articles/1
- 행위에 대한 동사 표현이 포함하지 않음
/show/articles/1 -> /articles/1
- 경로 부분 중 변하는 부분은 유일값으로 대체
/articles/{articleId} -> 각 articleId은 유일한 결과값을 가진다.
- 마지막에 / 포함하지 않음
/articles/1/ -> /articles/1
- 언더바 대신 하이픈 사용
/newest_ariticles/1 -> /newest-ariticles/1
- 파일 확장자는 URI에 포함하지 않음
/articles/1/photo.jpg -> /articles/1/photo [Accept: image/jpg]
참고
https://aws.amazon.com/ko/what-is/restful-api/
'네트워크' 카테고리의 다른 글
[네트워크] TCP/IP의 개념 (0) | 2023.10.18 |
---|---|
[네트워크] 소켓(SOCEKT) 통신, 3-way handshake의 개념 (0) | 2023.10.18 |