IT Diary/# Knowledge

[ Knowledge ] 도대체 REST API가 뭔데?

셜록호움즈 2021. 4. 2. 22:12
728x90
반응형

 

요즘 들어 가장많이 듣고, 많이 물어보는

질문인 거 같다

 

 도대체 REST API가 뭔데?

 

A : 아니.. 어 그냥 인터페이스할때 쓰는  API 방식이야..

B : 그럼 API는 뭔데?

A : 어..어 API는 API지..

 

개발이라는 틀에 갖혀 본질적인 개념에 대해 무지한게 아닌가 깨닫게 되는 요즘인거 같다.

 

REST API를 말하기에 앞서, 우선 API가 정확히 어떤걸 의미하는건지 알고가야할 것 같다.

 

위키디피아 사전상 API는 아래와 같다. 

 

“API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.”

 

사전상 의미는 역시 어렵다..

하지만, 다른 예시와 들면 어떨까

우리가 API의 개념은 익숙치 않지만 UI의 개념은 스마트폰을 접하게 되면 자연스럽게 많이들 듣게되는 말이다

"아이폰은 UI가 너무 좋아" 라는 말을 하지만 사람들은 정작 UI가 무슨 의미인지 모르고 쓰는 경우가 허다하다.

 

UI(User Interface) 로 사용자와 사용자가 다룰 HW/SW를 이어주는 다리라고 생각하면된다.

그럼 API는? API는 프로그램과 또다른 프로그램을 연결시켜주는 다리라고 이해하면 된다.

( * 간단한 예로 내가만든 홈페이지에서 구글지도를 사용하고 싶다면, 구글맵 API를 나의 홈페이지에 연결시켜서 사용하면 된다. )

 

그럼,  REST API는 단순하게 풀면 프로그램과 프로그램간 연결시켜주는 REST 라고 일단 해석이 되는데

REST가 의미하는건 뭘까?

 

위키디피아의 사전상 의미는 요렇다

"REST (Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다."

 

자원을 URI로 표시하고 해당 자원의 상태를 주고 받는 것을 의미 (자원 = 해당 소프트웨어가 관리하는 모든 것)

자원의 상태(정보)를 전달하는 것으로 주로 JSON과 XML을 통해 주고 받는다.

형식이기 때문에 어느 프레임워크를 쓰든, 소프트웨어를 만들때 사용하든 이 폼에 맞춰서 기능을 만들면 된다.

구성요소 : 자원(URI), 행위(HTTP METHOD), 표현(REPRESENTATION)

 : HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용

( * CRUD 는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. ) 

 

쉽게말하면, URI와 HTTP Method를 이용해 객체화된 서비스에 접근 하는 것.

Rest의 특징

1) 클라이언트-서버구조

2) 무상태 설계

3) 캐쉬처리 가능

4) 계층화

 

자.. 그럼 REST 까지 알아 봤고, 최종적으로 우리가 알고싶은 REST API 는 무엇일까?

위에서 정리한 REST 기반의 규칙들을 지켜서 설계된 API를 REST API 혹은 Restful API라고 한다.

 

 REST API 설계 규칙

- 구분자 '/'는 계층 관계를 나타내는데 사용한다

- http://mojjisoft.tistory.com/manage/newpost ( 예시 )

- URI 마지막 문자로 '/'를 포함하지 않는다

- 가독성을 위해 하이픈(-)을 권장한다

- URI 경로에는 소문자 사용을 권장한다

 설계 예시

- 목록 표시: [GET] /member

- 1개 내용 조회: [GET] /member/:id

- 생성: [POST] /member

- 수정: [PUT] /member

- 삭제: [DELETE] /member

 응답상태 코드(http status)

- 1xx: 전송 프로토콜 수준 정보 교환

- 2xx: 클라이언트 요청이 성공적으로 수행도미

- 3xx: 클라이언트 요청을 완료하기 위하 추가행동 필요

- 4xx: 클라이언트의 잘못된 요청 ( 우리가 자주보는 404 에러도 여기에 포함된다. )

- 5xx: 서버 오류

 

그러면 요즘 자주보이는 RESTful 은 또... 무슨말일까...

 

 RESTful 이란?

- REST 아키텍처를 구현하는 웹서비스를 나타내기 위해 사용되는 용어

- REST API를 제공하는 웹서비스를 RESTful 하다고 표현

 RESTful 목적

- 이해하기 쉬운 REST API를 만드는 것

- 호환성과 유연성을 위해 만드는 것이며, 반드시 필요하지 않다면 구현할 필요 없음

 RESTful 하지 못한 경우

- CRUD를 모두 특정 메서드(예를들어 GET, POST만 사용)만 사용하는 API

- URI에 리소스 표현이나 id외 정보가 들어가는 경우 (/member/update)

 

 

공부는 해도해도.. 끝이 없는 것 같다.

하나부터 차근차근 다시 초심으로 돌아가 열심히 공부해야겠다는 생각이 드는 하루다.

 

 

[참조]

REST, REST API, RESTful 이해하기|작성자 demonic

 

나의 색으로 채워지는 곳 : 네이버 블로그

인문, 경제, 사회과학에 관심이 많아요.

blog.naver.com

www.youtube.com/watch?v=PmY3dWcCxXI

728x90
반응형