Groo

REST API 방식의 이해 본문

프로그래밍 기초/Network

REST API 방식의 이해

김주엽 2020. 4. 16. 21:32

안녕하세요, 오늘은 HTTP 방식으로 필요로하는 자원에 쉽게 접근할 수 있도록 도와주는
REST API 아키텍처의 개념과 방식에 대해서 이해와 공부를 해보는 시간을 가지려고합니다.

 💁‍♀️ REST 무엇인가?

REST API 방식에 대해서 이해하려면 REST와 API 각각이 어떤 역할을 하는 것인지 알아야합니다. 먼저 REST에 대해서 알아보겠습니다. REST는 "Representational State Transfer"의 약자로 HTTP의 주요 저자 중 한 사람인 로이 필딩이 발표했습니다.

 

로이 필딩은 당시 HTTP의 우수성에 비해 제대로 활용하지 못하고 있는 모습이 아쉬워 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로 REST를 출시했습니다. REST는 간단히 HTTP 기반으로 필요한 자원에 쉽게 접근할 수 있도록 도와주는 아키텍처입니다.

 

CRUD Operation에 관한 설명 자료입니다.

REST에 대해 조금 더 자세히 설명을 하자면 HTTP에 존재하는 모든 자원에 고유한 URI를 부여하여 활용하는 것으로 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미합니다. 또한 이와 같이 REST 방식을 따른 시스템을 RESTful이라고 부릅니다.

 

REST 아키텍처는 HTTP URI를 통해 자원을 명시하고 HTTP 메서드를 통해 해당 자원에 대한 CRUD Operational을 적용합니다. CRUD Operational 방식을 활용하여 REST 아키텍처만의 POST, GET, PUT, DELETE와 같은 메서드를 사용합니다.

 

REST 아키텍처의 장점

1. 자원이 존재하는 Server, 자원을 요청하는 Client로 명확하게 구분된다.

2. HTTP 표준 방식을 활용한다면 어떤 플랫폼에서도 똑같이 사용 가능하다.

3. URI 주소 자체가 동사 + 명사로 이루어져 어떤 기능을 수행하는지 유추할 수 있다.

마지막으로 REST 아키텍처의 특징으로는 위와 같이 다양한 장점들이 존재하여 많은 사람들이 이용합니다. 그러나 REST 아키텍처의 단점이라고 말하면 HTTP 메소드의 표현이 간단하여 사용하기는 편리하지만 메소드의 종류가 제한적이라는 것이 단점입니다.

 🦸 API 파해쳐보자!

API는 "Application Programming Interface"의 약자로 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 저희는 API를 활용해 날씨, 교통 등 다양한 데이터 정보를 얻을 수 있습니다.

 

API를 활용하는 과정을 보겠습니다. 클라이언트는 서버의 구성 방식을 몰라도 상관없습니다. 그러나 만약 클라이언트가 서버의 데이터를 활용하려면 서버는 클라이언트에게 데이터베이스에 있는 데이터를 잘 활용할 수 있도록 어떠한 인터페이스를 전달해야합니다.

 

 

공공데이터포털 공식 홈페이지에서 다양한 API들을 사용할 수 있습니다.

위에서 말한 어떠한 인터페이스가 바로 API입니다. 다시 한 번 API를 정리하자면 클라이언트에게 서버 자원을 잘 가져다 쓸 수 있도록 만들어 놓은 인터페이스라고 할 수 있습니다. 현 시점의 API 종류와 갯수는 수 없이 많으며 다양한 분야에서 존재하고있습니다.

 ☀️ REST API 특징에 대해서

위에서 저희는 REST 아키텍처와 API에 대한 개념에 대해서 공부를 하였으며 어느 정도 감이 잡혔을 것이라고 생각합니다. 이번에는 위에서 배운 내용을 통합하여 진정한 REST API의 특징에 대해서 정리하는 시간을 가지도록 하겠습니다. 먼저 HTTP 메서드입니다.

 

Method 역할
POST POST 메서드를 통해 해당 리소스를 생성합니다.
GET GET 메서드를 통해 해당 리소스를 조회합니다.
PUT PUT 메서드를 통해 해당 리소스를 수정합니다.
DELETE DELETE 메서드를 통해 리소스를 삭제합니다.

이전에도 말했듯이 REST API는 CRUD Operational 방식에 따라 자신만의 HTTP 메서드가 존재합니다. 메서드의 갯수는 대략 4개이며 위의 표에서 볼 수 있듯이 각각의 메서드에 따라 다른 기능을 수행하고 있으며 생성, 읽기, 수정, 삭제가 자유롭게 가능합니다.

GET /food/delete/1

위의 코드는 REST 아키텍처를 제대로 적용 받지 못한 URI입니다. URI는 자원을 표현하는데 중점을 두어야하며 URI 속 delete와 같은 표현이 포함되면 안됩니다. 또한 URI 리소스 명을 작성할 때는 영어의 동사가 아닌 명사로 작성하는 것이 규칙입니다.

 

URI 설계 시 주의 사항

1. 슬래시 구분자(/)는 계층 관계를 나타내는데 이용한다.

2. URI 마지막 문자 뒤에 슬래시 구분자(/)를 포함하지 않는다.

3. URI 경로에는 대문자보다 소문자를 사용하여 나타낸다.

4. 파일 확장자의 구호를 포함하지 않는다.

추가적으로 URI를 설계할 때 지켜야하는 주의 사항 몇 가지가 존재합니다. 위의 내용은 정말 중요한 내용이며 RESTful한 시스템을 개발하기 위해서는 위의 조건들을 꼭 지켜주어야 통일성이 생깁니다. 또한 URI 주소를 통해 서비스 기능을 유추 가능하게해줍니다.

 

HTTP 응답 상태 코드에 따른 설명입니다.

위의 표는 REST API 형태로 클라이언트가 서버에게 리소스를 요청하였을 때 그에 따른 결과를 나타낸 표입니다. 서버에서는 클라이언트에게 상태 코드를 전달해주며 클라이언트는 전달 받은 상태 코드를 활용해 서버와 정상적으로 통신이 되었는지 판별합니다.

 👍 글을 마치며

오늘은 많은 프로그래머분들이 서버와 통신할 때 사용하는 REST API 아키텍처에 대해서 공부해보았습니다. REST API를 활용하여 서버에게 리소스를 요청하는 방법과 주의 사항 그리고 요청에 따른 다양한 결과에 대해서 또한 알아보았죠! REST API는 특정 플랫폼에서만 제한적으로 사용 가능한 것이 아닌 대부분의 많은 플랫폼에서 모두 동일하게 사용할 수 있다는 것이 가장 우수하다고 생각을 하였습니다. 다음 시간에는 오늘 배운 REST API를 활용하여 안드로이드에서 실제로 서버 통신의 과정을 구현해보겠습니다.

'프로그래밍 기초 > Network' 카테고리의 다른 글

URI & URL & URN  (3) 2020.12.01
네트워크 첫걸음  (0) 2020.08.13
Comments