설명
. REST API란 REST를 기반으로 만든 API입니다.
REST
. REST란 'Representational State Transfer'의 줄임말로 분산 하이퍼미디어 시스템을 위한 소프트웨어 구조(소프트웨어 아키텍처)의 한 형식입니다.
- 어떠한 소프트웨어를 설계하기 위한 하나의 구조라는 뜻입니다. 문을 설계하기 위해 여닫이, 미닫이 등의 구조가 있듯이 소프트웨어를 설계하기 위한 구조입니다.
- 일반적으로 HTTP 요청을 보낼 때 개발자들 사이에서 통용되는 URI의 구성과 사용하는 메소드의 규약입니다.
. REST의 조건
- 인터페이스 일관성
조건 | 설명 |
---|---|
자원의 식별 (indentification of resources) |
. 요청(request)만으로도 자원을 식별할 수 있어야 합니다. |
메시지를 통한 자원의 조작 (manipulation of resources through representations) |
. 자원을 조작하기 위한 내용은 자원을 식별하기 위한 공간이 아닌 별도의 공간에서 메시지를 통해 이뤄져야 합니다. HTTP에서는 메소드가 이에 해당합니다. |
자기서술적 메시지 (self-descriptive message) |
. 요청에 자원과 메시지만 있는 게 아니라 목적지(domain) 정보도 포함되어 있어야 합니다. - 응답(response)를 통해 받은 데이터에는 content-type과 함께 그 정보를 해석하기 위한 정보도 포함되어 있어야 한단 뜻입니다. |
애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어 (hypermedia as the engine of application state) |
. 상태의 전이(상태의 변경)은 하이퍼링크를 통해야 합니다. - 예를 들어 테이블 조회 → 레코드 생성 → 테이블 조회 순서로 상태가 변경될 때, 하이퍼링크를 통해야 합니다. |
- 캐시 처리 가능
- 무상태
- 클라이언트/서버 구조
- 계층화
- Code on demand (optional)
▴ 서버에서 바로 실행할 수 있어야 한다는 의미로 JS 등의 코드가 이에 해당합니다.
RESTful
. RESTful이란 REST 조건을 충족하는 소프트웨어 아키텍처를 구현하는 웹서비스입니다.
. 공식적인 명칭은 아니며 서비스가 REST 조건을 충족할 때 RESTful하다고 부릅니다.
REST API Design Guideline
URI로 자원을 식별할 수 있어야 한다
. REST 조건 중 '인터페이스 일관성-자원의 식별'을 충족시키기 위한 조건입니다.
- 'books'라는 집합을 조회하기 위한 요청의 URI는 'books'가 포함되어 있어야 한단 뜻입니다. 'books' 대신 아무 내용이나 포함되거나, 아무 내용도 없으면 이 조건을 충족시킬 수 없습니다.
. 자원의 이름은 동사보다 명사를 사용합니다.
- 동사는 행위를 내포하고 있기 때문입니다.
. 대문자보단 소문자를 사용합니다.
- URI 문법 형식 중 하나인 PFC 3986은 대소문자를 구분하기 때문입니다.
. document의 이름은 단수 명사를 사용해야 합니다.
. collection, store의 이름은 복수 명사를 사용해야 합니다.
. 계층 관계를 표시하는 구분자는 슬래시(/)를 이용해 URI에 표현합니다.
. URI의 마지막에는 슬래시(/)를 사용하지 않는다.
. URI에서 자원의 이름이 너무 긴 경우엔 하이픈을 이용해 가독성을 높일 수 있습니다.
- 밑줄(_)은 사용해선 안 됩니다.
. 파일 확장자는 포함하지 않습니다.
자원에 대한 행위는 HTTP Method로 표현한다
. REST 조건 중 '인터페이스 일관성-메시지를 통한 자원의 조작'을 충족시키기 위한 조건입니다.
- 'books'라는 자원을 CRUD 할지는 URI가 아니라 HTTP 메소드로 표현해야 합니다.
#00383 #한설날 #WhatIsTheRestAPI
참고 : Youtube 'naver d2', velog 'seokkitdo'