본문 바로가기
  • 실행력이 모든걸 결정한다
IT 상식

REST API란?

by 김코더 김주역 2021. 5. 3.
반응형

1. REST란?

REST API는 REST형식을 따르는 API이다.

그렇다면 여기서 REST란 무엇일까?

REST는 Representational State Transfer의 줄임말이다. 이를 직역하면 대표적 상태 전이인데, 직역 만으로는 자세한 의미를 파악하기 힘들 것이다.

 

대신, REST에 대해 이렇게 정의할 수도 있다.

- HTTP기반으로 필요한 자원에 접근할 수 있게 해주는 아키텍쳐

- 인터넷상의 컴퓨터 시스템간의 상호 운용성을 제공하는 방법들중 하나

참조 : www.youtube.com/watch?v=RP_f5dMoHFc - 그런 REST API로 괜찮은가?

 

그리고 필자는 이렇게 쉽게 이해했다.

인터넷상에 있는 컴퓨터 시스템간의 특정 자원에 대한 동작 요청 방법들중 하나

 

또한, RESTFUL은 REST답다는 뜻이고, REST원리를 따르는 시스템을 RESTFUL이라고도 한다.

 

 

2. REST API의 특징

그렇다면 그 특정 자원에 대해서 어떤 식으로 동작 요청을 보낼까?

바로 통합 자원 식별자인 URI(Uniform Resource Identifier)를 이용한다는 것이다.

참고로 URL는 자원의 위치를 나타내고 URI는 자원의 식별자(query string)까지 나타낸다는 차이점이 있다.

REST API의 큰 특징은 URI에 요청 정보를 실어서 HTTP기반으로 서버에 전송한다는 것이다. 따라서, 서버에서는 어떤 동작을 요청받은 것인지 URI 자체를 보고 추론이 가능하게 된다.

 

비슷한 개념으로 RPC(Remote Procedure Call)가 있는데, RPC는 URL을 통해 원격 서버의 API 함수를 호출하는 방식이다. URL의 경로는 API 함수명으로, 요청 파라미터는 함수의 인자로 간주한다.

 

 

3. REST API의 기본 흐름

1) 서버측

서버측에서는 주로 XML, JSON형식으로 자원을 저장하는데, 최근에는 JSON형식이 많이 채택되고 있다.

그리고 서버에서는 클라이언트가 이 자원들에 URI로 접근할 수 있게 하기 위해 URI 요청 형식 가이드를 제공한다.

JSON 형식

{
    "language": [
        {
            "name": "HTML",
            "category": "web",
            "developer": "W3C"
        },
        {
            "name": "CSS",
            "category": "web",
            "developer": "W3C"
        },
        {
            "name": "Java",
            "category": "application",
            "developer": "Oracle"
        },
        {
            "name": "Python",
            "category": "application",
            "developer": "Python"
        }
    ]
}

출처 : www.tcpschool.com/json/intro

 

2) 클라이언트측

URI의 요청 형식은 서버에서 알려주는 가이드를 따르면 되는데, 기본적인 URI 요청 형식은 이렇다.

 

 

 

이렇게 클라이언트가 어떤 자원에 접근하고자 하는지 알 수 있지만, URI만으로는 해당 자원에 대해 어떤 동작을 요청하는 것인지 알 수 없다.

즉, 클라이언트는 URI뿐만아니라 HTTP Method(verb)도 같이 전송해야 한다.

URI와 HTTP Method를 어떻게 같이 보낼 것인지는 개발 환경(언어, 라이브러리 등)에 따라 다르다.

다음 절에 HTTP Method의 종류들에 대해 살펴보자.

 

 

4. HTTP Method

자원에 대한 동작으로는 크게 생성, 읽기, 수정, 삭제가 있는데 이를 줄여서 CRUD라고도 한다.
각 CURD 동작에 해당하는 HTTP 메소드로 주로 5가지를 사용하게 된다.

  • GET - 읽기
  • POST - 생성
  • PUT - 전체 수정
  • PATCH - 일부 수정
  • DELETE - 삭제

 

 

5. REST API 설계 규칙

기본적인 REST API 설계 규칙은 이렇다.

  • resource(자원)는 가급적 명사를 사용하고, 소문자를 사용한다.
  • URI에 HTTP Method를 포함하지 않는다.
  • URI는 '/'로 끝나지 않는다.
  • _(underbar) 대신 -(dash)를 사용한다.
  • 파일 확장자는 URI에 포함하지 않는다.

더욱 디테일한 설계 규칙은 구글 검색을 통해 쉽게 찾을 수 있다.

 

 

6. 결론

REST API는 HTTP기반으로 특정 자원에 특정 동작을 요청할 때 사용할 URI, Method에 대한 약속이다.

그리고 그 약속에 대한 내용(양식)을 클라이언트에게 공개하면, 클라이언트는 이 양식대로 URI를 작성해서 서버에 있는 원하는 자원에 접근할 수 있다.

그리고 이 데이터를 소스코드 상으로 불러오고 다뤄야 할 때, 그 방법은 개발 언어나 라이브러리에 따라 다르기 때문에 관련 문서를 참고해야 한다.

 

나중에 시간이 된다면 예제를 다룬 포스팅도 올릴 것인데, 혹시 올리지 못했더라도 추가로 학습하고 싶은 분들을 위해 도움이 될만한 자료도 가져왔다.

 

+추가) 도움 될만한 자료

1) json-server, Javascript, Postman을 이용한 예제

poiemaweb.com/js-rest-api

 

2) Java - REST API 예제

zoomkoding.github.io/codingtest/java/2019/09/20/REST-JSON.html

 

3) Python - REST API 예제

velog.io/@dmstj907/Python-REST-API-%EC%8B%A4%EC%8A%B5

gosmcom.tistory.com/130

 

4) Nodejs - REST API 강의 by Danny TWLC

www.youtube.com/playlist?list=PLHGvDasahwZNIJ0aZQIhrf1Tg7Djqk7VQ

 

5) Springboot - REST API 강의 by 센치한개발자

youtu.be/uOMdRWKD4Gc

 

6) Springboot - REST API 강의 by 슬기로운코딩생활 - ★추천

https://www.youtube.com/watch?v=nrxzK_ky3uc 

 

반응형

'IT 상식' 카테고리의 다른 글

HTTP Cache 기초  (0) 2021.12.25
OSI 7Layer 설명 및 예시  (0) 2021.09.10
Domain/DNS/Port/Internet(ip)  (0) 2021.03.27
메모리의 구조  (0) 2021.03.12
HTTP/HTTPS와 SSL이란?  (0) 2021.03.12

댓글