API와 REST API

Perfume·2021년 9월 29일
1
post-thumbnail
post-custom-banner

RESTful API는 정말 기본적인 개념이고, 당연히 내가 잘 알고 있다고 생각했다. 하지만 'REST API에 대해 설명해보세요' 라는 질문을 받았을 때 매끄럽게 설명하지 못했다. 개념에 대해 너무 막연하게 이해하고 있었기 때문이다. 그래서 이 포스트를 작성하게 됐다.

REST는 어떤 형식을 나타내는 말이고 REST API는 그 형식을 따르는 API를 말한다. 그래서 REST API에 대해 알기 위해선 먼저 API, 그리고 HTTP에 대해 알아야 한다. http도 자세히 설명하자면 몹시 길어지기 때문에 이 글에서는 아주 기본적인 개념만 적고 넘어가겠다.

HTTP

HTTP는 짧게 말해 컴퓨터들의 통신 규칙이다.


이미지 출처: https://joshua1988.github.io/web-development/http-part1/

내가 브라우저에서 무언갈 클릭하거나 입력하면(요청) 서버는 그에 따른 결과물을 보여준다(응답). 이처럼 브라우저(클라이언트)와 서버가 서로 요청하고 응답하기 위해서는 정해진 규칙이 필요하다.

상황 1
브라우저 : תן לי תמונה של החתול
서버: ????

상황 2
브라우저: 고양이 사진을 주세요
서버: 그래 ~ 🐱

상황 2처럼 서로 알아들을 수 있는 공통된 메시지가 바로 http다.

API

API는 간단히 말해 컴퓨터가 어떤 기능을 실행하도록 하는 것이다. 이렇게 표시해서 이 주소로 A정보를 요청하면 이렇게 답이 올거라는 공개된 메뉴얼이 있으면,누구든 그 메뉴얼을 참조해서 A정보를 활용하는 소프트웨어를 만들 수 있을 것이다. 이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단API라고 한다.

REST API

시작할 때 REST는 어떤 형식을 나타내는 말이고 REST API는 그 형식을 따르는 API라는 말을 했었다. 이제 API에 대해는 알고 있으니 REST에 대해서 알면 될 것 같다.

REST의 개념을 한줄로 요약하면 "http에서 필요한 자원에 접근할 때 웹의 장점을 최대한 활용하기 위한 아키텍처"다. 풀어서 설명하자면 REST는 http 통신을 할 때 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속을 말한다.

위에서 http는 브라우저(클라이언트)와 서버가 서로 요청하고 응답하기 위해 정해진 규칙이라고 했다. 서버와 클라이언트가 서로 이해할 수만 있다면 어떤 식으로 메시지를 보내도 상관이 없을 것이다. 하지만 더 많은 사람이 쉽게 이해할 수 있는 좋은 규칙이 있다면? 이렇게 소통하는 방식이 효율적이라고 많은 개발자들이 약속한 방식이 있다면? 그게 바로 REST다. 그러니까 REST API는 특정한 기술이 아니라, http 기능을 잘 사용할 수 있도록 해주는 모범사례라고 말할 수 있다.

REST API의 핵심은 요청을 보내는 주소만 보고도 그 요청이 어떤 동작이나 정보를 위한 것인지 추론할 수 있어야 한다는 점이다. 또 형식이기 때문에 기술에 구애받지 않는다. 어떤 언어로 만들든 소프트웨어간 http로 정보를 주고 받는 부분이 있다면 이 형식, 규칙들을 준수해서 RESTful한 서비스를 제공할 수 있는 것이다.

REST API의 구성요소

REST API는 다음과 같이 구성된다.

1. http method
get -데이터 조회
post -새로운 데이터 추가
put - 데이터 전체 수정
patch - 데이터 일부 수정
delete - 정보 삭제

2. URL - 데이터 접근
3. REpresentation - 자원의 표현

REST API 디자인 가이드

  1. URI는 정보의 자원을 표현해야 한다.
  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

참조: https://www.youtube.com/watch?v=X4DezEXbc5o
https://www.youtube.com/watch?v=iOueE9AXDQQ&t=83s

profile
공부하는 즐거움
post-custom-banner

0개의 댓글