[21.10.31] REST API를 써야하는 순간

yed·2021년 10월 31일
0

프로젝트를 시작하면서 Controller를 만드는데 어떤 순간에서 REST API를 써야할지 바로 판단하기 어려웠음 그래서 REST API에 대해 다시한번 개념 잡기


REST API

REST(Representational State Transfer)의 약자로 자원을 표현으로 구분해 주고받는 것을 의미한다.
API는 컴퓨터 프로그램과 상호 작용하여 정보를 검색하거나 기능을 수행하고자 할 때 클라이언트가 원하는 것을 시스템에 전달할 수 있게 지원해주는 인터페이스다.

RESTful API는 리소스 상태에 대한 표현을 클라이언트에게 전송한다. HTTP(JSON, HTML, XLT 또는 일반 텍스트)를 통해 몇 가지 형식(CRUD)으로 전송됨. JSON을 사용하는게 일반적으로 클라이언트에서 json을 보내주는 ajax 사용시 보통 REST API를 사용한다.

REST의 구성

  • 자원(resource) - URI. 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.

  • 행위(Verb) - HTTP METHOD. HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공한다

  • 표현(Representations) - JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

REST의 특징

1) Uniform (유니폼 인터페이스)
Uniform Interface는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말합니다. 안드로이드 플랫폼이건, iOS 플랫폼이건, 또는 C나 Java/Python이건 특정 언어나 기술에 종속 받지 않고 HTTP와 JSON을 사용할 수 있는 모든 플랫폼에 사용이 가능

2) Stateless (무상태성)
REST는 무상태성 성격을 갖습니다. 다시 말해 작업을 위한 상태정보를 따로 저장하고 관리하지 않습니다. 세션 정보나 쿠키정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 됩니다. 이전 요청이 다음 요청의 처리에 연관되어서는 안된다. 서비스의 자유도가 높아짐.

3) Cacheable (캐시 가능)
HTTP라는 기존 웹표준을 그대로 사용하기 때문에, 웹에서 사용하는 기존 인프라를 그대로 활용이 가능합니다. 따라서 HTTP가 가진 캐싱 기능이 적용 가능합니다. 캐시 사용을 통해 대량의 요청을 효율적으로 처리할 수 있음. 전체 응답시간, 성능, 서버의 자원 이용률이 향상됨

4) Self-descriptiveness (자체 표현 구조)
REST API 메시지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어 있다는 것입니다.

5) Client - Server 구조
REST 서버는 API 제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조

6) 계층형 구조
REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 합니다.

REST API 설계

URI는 정보의 자원을 표현해야 한다.

HTTP방식을 사용할 때 CRUD(GET/POST/PUT/DELETE)랑 연동시켜 특정 URI(uniform resource indentifier)와 상응하는 데이터를 전송한다. URI에 method의 명칭이 들어가면 안된다. URI의 형태만으로 기능을 구분할 수 있음.

  • GET방식 예 : /member/1 (1번의 회원정보를 가져오는 URI)
  • POST방식 예 : /member (회원정보를 추가하는 URI)

리소스 조회는 GET, 생성은 POST, 수정은 PUT, 삭제는 DELETE로 구분됨

URI는 대소문자를 구분하기 때문에 대문자보다는 소문자로 통일하고 밑줄은 가독성이 떨어져 하이픈을 사용하자. 컬렉션과 도큐먼트의 이름으로 영어단어의 단수/복수를 사용할 것.

  • http:// restapi.example.com/sports/soccer/players/13
    URI를 통해 리소스의 관계가 표현되어야 함. sports(복수)라는 컬렉션에서 도큐먼트가 soccer인 players(복수) 중 13번 선수에 대한 URI라는 것을 직관적으로 알 수 있음

REST API 사용 이유

1. 분산 시스템을 위해

REST는 분산 시스템 설계를 위한 아키텍처 스티일. 거대한 애플리케이션을 모듈, 기능별로 분리하기 쉬워졌다. RESTful API를 서비스하기만 하면 어떤 다른 모듈 또는 애플리케이션들이라도 RESTful API를 통해 상호간에 통신을 할 수 있기 때문이다.

2. WEB브라우저 외의 클라이언트를 위해서다. (멀티 플랫폼)

웹 페이지를 위한 HTML 및 이미지등을 보내던 것과 달리 이제는 데이터만 보내면 여러 클라이언트에서 해당 데이터를 적절히 보여주기만 하면 된다.


출처


그런 REST API로 괜찮은가 친구에게 추천받은 영상!

profile
6개월 국비과정 기록하기

0개의 댓글