본문 바로가기

[한설날] REST API란?

728x90

 

 

 

설명

. 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'

 

728x90