Restful, Rest, Restful API

2022. 9. 26. 17:44android

Rest API에서 API 무엇인가요??

먼저 API란 쉽게 말하면 "원칙, 규칙" 입니다.

규칙은 합의한 사항이고 지켜야 하는 법칙입니다.

그럼 무엇을 어디에서 합의하고 지켜야하는걸까?? 

바로 " 서로 다른 애플리케이션, 소프트웨어 사이 " 에서 서비스를 제공하기 위한 " 일종의 통신 규약 " 입니다.

 

그렇다면 REST API 는 무엇인가요??

 

이제 REST API 를 알아보자.

 

 

 

REST API 를 한마디로 생각해보면 

" REST API는 웹에서 데이터를 전송하고 처리하기 위해 정의한 인터페이스이다. "

라고 생각합니다.

 

더 디테일하게 말하면

 

 " 웹과 같은 분산 하이퍼 미디어 시스템을 이용하는 소프트웨어 애플리케이션의 네트워크

통신을 위한 구조, 규약. " 입니다.

 

 

 

REST 는 Representational State Transfer 의 약자인데 그냥 어떤 사람이 논문에서 발표한 이름이라고 합니다.

 

REST 라는 이름으로 된 전송 규칙 정도라고 생각하면 될 것 같다.

 

현재 거의 대부분의 웹 애플리케이션과 사이트들에서 서버와 클라이언트가 통신하기 위해 Rest api를 사용합니다.

 

서버는 데이터를 가지고 있으며 누군가가 "나 데이터 좀 쓸게~" 하면 "요청한 데이터를 보내주는 곳"이고,

 

클라이언트는 데이터를 사용하는 사람이 될 수도 있고 , 컴퓨터, 앱, 사이트 등 "데이터를 사용하는 곳"을 클라이언트라고 합니다.

 

그 사이에 REST API 가 "서버야 너는 클라이언트한테 데이터를 이렇게 보내, 클라이언트는 서버한테 데이터를 이렇게 요청해! " 라고 중간에서 중개자 역할을 합니다.

 

REST 는

1. Resource URI

2. HTTP Method

3. Representaion 

 

3개로 구성됩니다.

 

모든 자원은 고유한 ID 가 존재하고, URI 를 이용해서 Server에 요청합니다.

요청할 때는 HTTP Method 를 이용해 알려주고 서버는 클라이언트의 요청에 알맞은 Representation 을 전송( Transfer ) 합니다.

 

리소스는 무엇이든 될 수 있고, Representaion은 반환된 리소스가 아닌,

특정 시점에서의 리소스가 가지고 있는 "무언가" 또는 요청에 의해 Transfer 되어지는 그 어떤 것도 Representaion 이 될 수 있다고 합니다.

그래서 Representational  " State "  Transfer 라고 한다.

 

그럼 REST API 는 어떻게 서로 리소스를 전달할까?

1. HTTP URI( Uniform Resource Identifier ) 를 통해 리소스를 명시하고,

2. HTTP Method 를 통해 리소스로 어떤 작업을 할지 알려준다. 

 

 

리소스를 명시하기 위한 규칙으로는

 

1. / 는 계층 관계를 나타낼 때 사용한다.

 

2. URI 마지막에는 / 를 포함하지 않는다.

 

3. - 은 URI 의 가독성을 위해 사용한다.

 

4. _ 은 사용하지 않는다.

 

5. 되도록 소문자로 적는다.

 

6. 확장자는 포함하지 않는다.

 

7. 리소스 간의 관계가 있다면 서브 리소스에 명시적으로 표현할 수 있다.

 

 

또한 리소스를 조작하기 위한 HTTP Method 의 행동에는

 

1. POST ( Create )

 

2. GET ( Read )

 

3. UPDATE ( Update )

 

4. DELETE ( Delete )

 

4개가 있습니다.

 

 

 

REST의 특징으로는

 

1. Server Client

= 클라이언트와 서버 구조로 각각의 역할에 따른 개발 영역이 구분되고 의존성이 줄어듭니다.

2. Stateless

= 요청만을 처리하면 됩니다. 다른 정보를 가지고 있지 않기 때문에 구현이 단순해집니다.

3. Cacheable

= HTTP 웹 표준을 그대로 사용해 캐싱 기능을 적용할 수 있습니다.

4. Layer System

= 클라이언트는 클라이언트와 서버 사이의 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받습니다. 서버는 요청을 다른 서버로 전달할 수도 있습니다.

5. Code On Demand

= REST 아키텍처 스타일에서 서버는 소프트웨어 프로그래밍 코드를 클라이언트에 전송하여 클라이언트 기능을 일시적으로 확장하거나 사용자를 지정할 수 있습니다.

6. Uniform Interface

= 모든 RESTful 디자인의 기본입니다. 서버가 표준 형식으로 정보를 전송하기 위함이다.

 

이렇게 6개의 특징을 가지고 있습니다. ( 순서는 상관없습니다. )

 

마지막으로 정리하겠습니다.

 

" REST API는 분산 하이퍼 미디어 시스템(웹, 인터넷)을 이용하는 모든 서로 다른 소프트웨어, 애플리케이션 사이에서 REST 아키텍처를 이용하여 데이터를 http uri로 표현,  http method 로 행위, 행위에 대한 표현 representation을 전송하고 처리하기 위해 정의한 인터페이스이다. "

 

RESTful API는 REST 아키텍처의 규칙을 잘 지켜 올바르게 설계한 REST API를 RESTful하다, RESTful API 이다 할 수 있습니다. 즉 REST API를 이용하는 모든 소프트웨어, 애플리케이션이 RESTful 하지 않으며 REST 통신 규약을 잘 따르고 신뢰 가능한 api 만이 Restful 하다 할 수 있습니다.

 

 

이상으로 Rest API , REST에 대해 간략하게 알아보았습니다. 

읽어주셔서 감사합니다.

 

 

'android' 카테고리의 다른 글

Android Compose  (0) 2022.09.28
안드로이드 4대 컴포넌트  (0) 2022.09.26
Serialization(직렬화) & Deserialization(역직렬화)  (0) 2022.09.26
어노테이션 뜻, 이유, 장점  (2) 2022.09.25
안드로이드 OS 구조  (1) 2022.09.23