TIL 68 | RESTful API

hyounglee·2020년 10월 17일
0

CS

목록 보기
3/5
post-thumbnail

Must-Know-About-Frontend/rest-api

REST?

REpresentational State Transfer의 약자로 전반적인 웹 어플리케이션에서 상호작용하는데 사용되는 웹 아키텍쳐 모델이다. 즉 자원을 주고받는 웹 상에서의 통신 체계에 있어서 범용적인 스타일을 규정한 아키텍쳐라고 할 수 있다.

API?

Application Programming Interface의 약자로 구글 맵 API, 카카오 API 등 기존에 있는 응용 프로그램을 통해서 데이터를 제공받거나 기능을 사용하고자 할 때 사용하는 인터페이스 및 규격을 말한다. API는 프로그래밍 언어, 운영체제 등에서도 사용되는 범용적인 용어다. 따라서 RESTful API란 REST 원칙을 적용하여 서비스 API를 설계한 것을 말하며, 대부분의 서비스가 RESTful API를 제공한다.

RESTful API

  • API의 엔드포인트 구조를 표현하는 방식이다.
  • API에서 전송하는 자원(resource)을 URI로 표현하고, 해당 자원에 행하고자 하는 의도를 HTTP 메소드로 정의한다.
  • 각 엔드포인트는 리소스를 표현하는 고유의 URI 주소를 가지고 있으며, 해당 리소스에 행할 수 있는 행위를 표현하는 HTTP 메소드를 처리할 수 있게 된다.

특징

균등한 인터페이스

REST가 HTTP의 표준만 따른다면 어떠한 기술이던지 접목하여 사용할 수 있다. 플랫폼이나 언어의 제약에 구애받지 않는다. 요즘은 REST API를 정의할 때 JSON(JavaScript Object Notation) 방식을 가장 많이 사용한다.

무상태성

서버는 클라이언트의 상황을 고려하지 않고 API 요청에 대해서만 처리하기 때문에 이를 상태가 없다고 표현한다. 이렇게 되면 구현이 간결해진다.

캐싱 가능

REST는 HTTP 표준을 기반으로 만들어졌기 때문에 HTTP 특징인 캐싱을 사용할 수 있다. REST API를 활용하여 GET 메소드를 Last-Modified 값과 함께 보낼 경우, 컨텐츠의 변화가 없을 때 캐시된 값을 사용하게 된다. 이렇게 되면 네트워크 응답시간 뿐만 아니라 API 서버에 요청을 발생시키지 않기 때문에 부담이 덜 하다는 장점 또한 가지게 된다.

자체 표현성

REST API의 자원명시 규칙 및 메소드는 그 자체로 의미를 지니기 때문에 어떠한 요청에 있어서 그 요청 자체로 어떤 것을 표현하는지 알아보기 쉽다. 물론 API를 규정한 각 서비스들이 문서를 제공하지만 이 특성에 따라서 요청하는 방식만으로 어떠한 의미인지 알 수 있어야 좋은 REST API라고 할 수 있다.

클라이언트-서버 구조

REST 서버가 API를 제공하는 방식이기 때문에 클라이언트에서 처리하는 부분과 독립적으로 동작한다. 따라서, 서로간의 의존성이 줄어들고 클라이언트와 서버를 최대한 독립적으로 개발할 수 있도록 도와준다.

계층형 구조

클라이언트는 계층형 구조가 불가능하지만 REST 서버의 경우, 보안/로드 밸런싱/암호화 등을 추가할 수 있고 Proxy 및 게이트웨이 등의 중간매체를 사용할 수 있다.

Path parameters

GET

필요한 정보를 요청하는 메소드이다.

POST, PATCH

POST와 PATCH 모두 body에 정보를 담아 전송하는 메소드이다. 두가지 구분 없이 사용하는 경우도 있으나 정석으로 사용한다면 POST는 완전히 내용을 교체하는 경우, 추가하는 경우에 사용이 되고, PATCH는 정보의 일부를 수정하는 경우 사용한다.

DELETE

Query string

GET parameters

PATH parameter vs. Query String

쿼리 파라미터는 필터링, 검색 등의 리소스를 받아올 때 주로 사용한다!

REST API의 핵심

URL는 리소스를 표현해야 한다.

  • 리소스 명은 동사가 아닌 명사를 사용한다.
/students/1
  • 리소스는 Collection과 Document로 표현할 수 있다.
    Collection은 보통 복수형태로 표현한다.
/locations/seoul/schools/3

locations은 Collection, seoul은 Document

리소스에 대한 행위는 HTTP의 Method로 표현한다.

  • GET은 리소스를 조회한다.
  • POST는 리소스를 생성한다. PATCH는 리소스를 일부 수정한다.
  • PUT은 리소스를 업데이트 한다.
  • DELETE는 리소스를 삭제한다.

RESTful 한 API는 메소드로 어떤 요청을 보내는 것인지 알 수 있으므로 URI는 동사가 아닌 명사로 작성하는 것이 국룰이다!

Status Code

요청에 대한 응답의 상태코드 또한 명확하게 잘 돌려주는 것이 RESTful API이다.

  • 2xx | 성공 관련 (200 Ok, 201 Created)
  • 3xx | 리다이렉션 관련 (304 Not Modified)
  • 4xx | 클라이언트 에러 관련 (400 Bad Request, 401 Unauthorized)
  • 5xx | 서버 에러 관련 (500 Internal Server Error)

~~500 떴을때는 백엔드 탓하기 전에 와이파이 체크 꼭 해보자... 헤헤~~

profile
(~˘▾˘)~♫❝ 쉽게만 살아가면 재미없어 빙고 .ᐟ ❞•*¨*•.¸¸♪

0개의 댓글