dogo_ day

REST API 란? 본문

IT/DevOps_

REST API 란?

dogo_ 2023. 6. 16. 11:27

REST API 란?

REST API: Representational State Transfer Application Programming Interface

웹 서비스에서 자주 사용되며, 클라이언트와 서버 간의 통신을 위한 인터페이스로 사용된다.

 

다양한 리소스(데이터 또는 서비스)를 URI로 표현하고, HTTP Method(GET, POST, PUT, DELETE 등)를 사용하여 해당 리소스에 대한 액션을 수행한다.

 

URI: Uniform Resource Identifier
인터넷 상에서 특정 자원을 나타내는 유일한 주소이다.
URL(Uniform Resource Locator)은 URI의 하위 개념으로, 인터넷 상에서 특정 자원의 위치를 나타내는 주소이다.
즉, 모든 URL은 URI지만 모든 URI가 URL은 아니다.
예를 들어 데이터베이스 내의 테이블을 나타내는 URI는 URL이 아니다.

URI는 크게 두 부분으로 나뉜다. 첫 번째 부분은 스키마로 해당 자원에 어떤 프로토콜을 사용하여 접근해야 하는지를 나타낸다. 두 번째 부분은 자원의 경로(path)로, 해당 자원이 위치한 서버와 디렉토리 구조를 포함한다. 쿼리와 프래그먼트를 포함할 수 있다.
기본 형태 : <schema://host:port/path?query#fragment> 
예시) 구글 : <https://www.google.com/search?q=rest+api>

<https://www.google.com/search?q=rest+api>

 

REST 구성에 대해 알아보자.

- 자원(RESOURCE) - URI

- 행위(VERB) - HTTP METHOD

- 표현(REPRESENTATIONS)

자원에 대한 표현 방식은 JSON, XML 등과 같은 포맷을 사용한다.

 

HTTP Method: 상태 변경을 요청
GET: 리소스 조회
POST: 리소스 생성
PUT: 리소스 전체 수정
PATCH: 리소스 일부 수정
DELETE: 리소스 삭제

REST 특징

- 리소스 기반(Resource-based): 각각의 리소스는 고유한 식별자(URI)를 가지고 있으며, 클라이언트는 URI를 통해 해당 리소스에 접근

- 상태 없음(Stateless): 서버는 클라이언트의 상태를 저장하지 않고, 각 요청은 독립적으로 처리된다. 클라이언트는 필요한 상태 정보를 요청에 포함시켜야 한다.

- 통일된 인터페이스: REST API는 일관된 인터페이스 규칙을 따라야 한다. 주로 HTTP메서드(GET, POST, PUT, DELETE)를 사용하여 리소스에 대한 액션을 수행하고, HTTP 상태코드를 통해 응답을 전달한다.

- 자체 표현(Self-descriptive): REST API는 자체 설명적인 데이터를 제공하여 클라이언트가 리소스에 대한 이해를 돕는다. 일반적으로 JSON 또는 XML 형식의 데이터를 사용한다.

 

이런 궁금증이 있을 수 있다.

REST API 와 RESTful API 차이가 뭐에요? 같은 말인건가요?

 

영문자 그대로 해석해서 단순히 꽉찬 REST API라고 생각하면 이해가 쉽다.

REST API 설계에 대한 해외논문이 있다.

그 요구사항을 모두 준수하면서 REST API를 설계한다면 RESTful API이다.

RESTful API 설계 시 요구사항
URI는 정보의 자원을 표현해야 한다.
자원에 대한 행위는 HTTP 메서드(GET, POST, PUT, DELETE, PATCH 등)로 표현한다.
슬래시(/)는 계층 관계를 나타내는 데 사용한다.
URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
하이픈(-)은 URI 가독성을 높이는 데 사용한다.
언더바(_)는 URI에 사용하지 않는다.
URI 경로는 소문자로 구성한다.
파일 확장자는 URI에 포함하지 않는다.

 

우린 이제 REST API 도 알고 RESTful API의 개념도 알게되었다. 😎

'IT > DevOps_' 카테고리의 다른 글

Nginx 그리고 Gunicorn  (0) 2023.06.16
Nginx 란?  (0) 2023.06.15
Docker 란?  (0) 2023.06.15