4T2F / ThinkBig

🌟씽크빅 스터디🌟
5 stars 1 forks source link

REST API에 대해 알아보자! #74

Open Eunice0927 opened 4 months ago

Eunice0927 commented 4 months ago

REST API란?

REST API : 클라이언트와 서버 간의 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스를 말한다.

API(애플리케이션 프로그래밍 인터페이스)는 애플리케이션이나 디바이스가 서로 간에 연결하여 통신할 수 있는 방법을 정의하는 규칙 세트이다.

REST API는 REST(REpresentational State Transfer) 아키텍처 스타일의 디자인 원칙을 준수하는 API이다. 이러한 이유로 REST API를 RESTful API라고도 한다.

1

REST란?

REST는 자원 기반의 구조 (ROA: Resource Oriented Architecture) 설계의 중심에 Resoure가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

이 때 가장 중요한 규칙은 다음 두가지이다.

여기서 자원은 문서, 사진, 그림, 데이터 등 소프트웨어가 관리하는 모든 것을 의미한다.

이러한 자원들을 HTTP URI(Uniform Resource Identifier)를 통해 명시해야 한다. 때문에 웹의 모든 자원에 고유한 ID인 HTTP URI 를 부여한다.

예를 들어 DB의 영화 정보가 자원일 때, /movies를 자원의 표현으로 정한다. ex) GET /movies/1

그리고 HTTP Method를 통해 해당 자원(URI)에 대한 'CRUD Operation'을 적용한다.

💡 CRUD Operation이란? Create : 데이터 생성(POST) Read : 데이터 조회(GET) Update : 데이터 수정(PUT, PATCH) Delete : 데이터 삭제(DELETE)

2

REST의 구성

REST의 특징

1) Uniform (유니폼 인터페이스)

2) Stateless (무상태성)

3) Cacheable (캐시 가능)

4) Self-descriptiveness (자체 표현 구조)

5) Client - Server 구조

6) 계층형 구조

REST의 장단점

장점

단점

REST가 필요한 이유

최근의 서비스(애플리케이션)의 개발 흐름은 멀티 플랫폼, 멀티 디바이스 시대로 넘어와 있다. 단순히 하나의 브라우저만 지원하면 되었던 이전과는 달리, 최근의 서버 프로그램은 여러 웹 브라우저는 물론이며, 아이폰, 안드로이드 애플리케이션과의 통신에 대응할 수 있어야 한다.

따라서 플랫폼에 맞추어 새로운 서버를 만드는 수고를 들이지 않기 위해 범용적으로 사용성을 보장하는 서버 디자인이 필요하게 되었었다.

그래서 다시 REST API란?

REST API : REST 기반으로 서비스 API를 구현한 것

최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.

이 API는 항상 메뉴얼도 힘께 제공해야 한다. URI를 모르면 클라이언트는 사용할 수 없기 때문이다.

💡 REST API 설계 규칙 1) 명사, 소문자 => 동사x 2) 명사는 복수형 3) URI 마지막은 / 포함x 4) URI는 언더바x 하이픈 사용 - 5) 파일의 확장자를 표시x

RESTful

1. RESTful 하다?

REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭하므로 ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.

2. RESTful의 목적

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이 목적이다.

RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 '일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것'이 주 동기이니, 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.

3. RESTful 하지 못하는 경우

URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.

Client Side가 정형화 되어있지 않은 환경에서 HTTP의 Response 규약을 지키지 않고 본인들이 만들어넨 JSON 컨벤션으로 응답하는 경우 표준을 지키지 않아 개발 속도를 저하하는 문제를 발생시킨다. ex1) CRUD 기능을 모두 POST로만 처리하는 API ex2) route에 resource, id 외의 정보가 들어가는 경우(/students/updateName)

참고 자료