REST API

김진경·2020년 8월 24일
0
post-thumbnail

API

먼저 API가 뭔지 짚고 넘어가자.

사용자가 컴퓨터나 스마트폰을 사용한다고 가정해보자.
원하는 대로 제어하고 정보를 볼 수 있도록 버튼, 스크롤 바, 슬라이더, 브라우저 창 등의 장치가 마련되어 있다. 이것을 UI(User Interface) 라고 한다.
소프트웨어와 인간의 소통을 위한 창구이다.

기계와 기계, 소프트웨어와 소프트웨어 사이에서도 수많은 정보 요청과 교환이 일어난다. 이들 사이에서도 소통할 수 있는 창구가 필요하다.

예를 들어 기상청 서버가 있고, 여기에서 정보를 받는 많은 앱과 사이트들이 있다고 하자. 만약 '날짜(8/17), 지역(서울), 조회할 내용(기온)' 같은 형식으로 정보를 요청하면, '조회한 내용(17도)' 이 도착하는 공개된 매뉴얼이 있다면 누구나 기상청 정보를 활용하여 소프트웨어나 앱을 만들 수 있을 것이다.
ex) 우체국 송장. 보내는 사람, 주소 등의 형식이 갖춰져 있다.

이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 Application Programing Interface, API라고 한다.



REST API

REST API는 HTTP URL을 통해 자원을 명시하고, HTTP Method(POST, GET, DELETE, PUT)를 통해 해당 자원에 대한 CRUD(CREATE, READ, UPDATE, DELETE) 오퍼레이션을 적용하는 방법론이다.


ex) REST를 사용하는 간단한 웹 애플리케이션

REST는 형식이기 때문에 기술,언어에 구애받지 않는다(ex 우체국 송장에 영어, 한국어 둘다 쓸 수 있음). RESTful하게 만든 API는 요청을 보내는 주소를 보는 것만으로도 대략 어떤 요청인지 짐작가능하다.



REST의 구성요소

  1. 자원(Resource) : ID
    모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
    자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
    Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.

  2. 행위(Verb) : HTTP Method
    HTTP 프로토콜의 메소드를 사용한다.
    HTTP 프로토콜은 Get, Post, Put, DELETE 4개의 메소드를 주로 제공한다.

  3. 표현 (Representaion of Resource)
    Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
    REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.
    JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
    https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html



URI

만약 학원의 DB에 위와 같은 요청을 보내면 '2반에 속하는 학생들'의 정보가 올 것이고,

뒤에 '15'를 붙이면 인덱스 번호가 '15'인 학생의 정보가 도착할 것이다.

이렇게 자원을 구조와 함께 나타내는 구분자를 URI라고 한다.



REST가 필요한 이유

  1. 애플리케이션을 분리하거나 통합할 때 사용된다.
  2. 다양한 클라이언트의 등장.
  3. 최근의 서버 프로그램은 다양한 브라우저와 안드로이폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야 한다.
  4. 이러한 멀티 플랫폼에 대한 지원을 위해 서비스 자원에 대한 아키텍처를 세우고 이용하는 방법을 모색한 결과, REST에 관심을 가지게 되었다.
    https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html


출처:
https://www.youtube.com/watch?v=iOueE9AXDQQ
https://velog.io/@kjh107704/REST-%EC%84%9C%EB%B2%84-REST-API%EB%9E%80#rest%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

rest에 대한 상세한 포스팅
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

profile
Maktub.

0개의 댓글