본문 바로가기

이것저것 스터디📚/CS 스터디

REST API

- REST API : REST를 기반으로 만들어진 API를 말한다.

1. REST(Representational State Transfer)란?

- REST는 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.

- HTTP URI(Uniform Resource Identifier)를 통해 자원을 명시하고

- HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해

- 해당 자원(URI)에 대한 CRUD(Create, Read, Update, Delete) Operation을 적용하는 것을 의미한다.

 

2. REST 구성

1) 자원(Resource) : HTTP URI

2) 자원에 대한 행위(Verb) : HTTP Method

3) 자원에 대한 행위의 내용(Representations) : HTTP Message Pay Load

 

3. REST의 특징

1)  Server-Client(서버-클라이언트 구조) : 서버와 클라이언트가 분리되어 있기 때문에, 서버와 클라이언트에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.

 

2) Stateless(무상태) : REST 통신은 무상태적이며, 각 요청이 서버에 대한 이전 요청과 상관없이 독립적으로 처리된다.

 

3) Cacheable(캐시 처리 가능) : 기존 HTTP 웹 표준을 그대로 사용하기 때문에, HTTP가 가진 캐싱 기능이 적용된다.

 

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

 

5) Uniform Interface(인터페이스 일관성) : URI로 지정한 리소스에 대한 조작을 일관되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 말한다.

 

4. REST의 장점

1) 기존 HTTP 프로토콜 활용 : REST API는 HTTP 프로토콜을 기반으로 동작하기 때문에 별도의 인프라의 구축 없이 기존의 HTTP 인프라를 활용하여 구축이 가능하다.

2) HTTP 표준 활용 : REST API는 HTTP 표준 프로토콜을 최대한 활용하기 때문에 HTTP의 다양한 기능과 장점을 활용할 수 있다. 예를 들어, HTTP의 상태 코드를 사용하여 요청 상태를 나타내거나, HTTP 메서드를 이용하여 CRUD(Create, Read, Update, Delete) 연산을 수행할 수 있다.

3) 플랫폼 독립성 :  REST API는 HTTP 표준을 따르므로 어떤 플랫폼에서도 사용할 수 있으며, 서버와 클라이언트 간의 플랫폼 종속성을 최소화하여 다양한 플랫폼에서 호환성을 유지할 수 있다.

4) 범용성 : REST API는 Hypermedia API의 기본 원칙을 따르며 범용성을 보장한다. Hypermedia API는 다양한 타입의 클라이언트가 서비스에 접근할 수 있도록 하기 위한 원칙을 가지고 있다.

5) 의도 파악 용이 : REST API 메시지는 의도하는 바를 명확하게 나타내기 때문에, HTTP 메서드와 URL 구조를 통해 어떤 동작을 수행하고자 하는지 쉽게 파악할 수 있다.

6) 문제 최소화 : REST API는 서버와 클라이언트 간의 역할을 명확하게 분리하기 때문에 통신과 데이터 처리에서 발생할 수 있는 문제를 최소화하고, 코드의 유지보수와 확장성을 개선한다.

5. REST 단점


1) 표준 부재: REST는 규격화된 표준이 없기 때문에 개발자들이 자체적으로 리소스 URI, HTTP 메서드, 응답 포맷 등을 정의해야 한다. 이로 인해 일관성이 부족할 수 있고, 서로 다른 REST API들 간에 호환성 문제가 발생할 수 있다.

2. 제한된 HTTP 메서드: REST는 일부 제한된 HTTP 메서드(GET, POST, PUT, DELETE 등)만 사용하므로 모든 작업을 표현하기에 한계가 있다. 예를 들어, 파일 업로드와 같이 HTTP 메서드로 간단히 처리하기 어려운 작업들이 있다.

3. 브라우저 테스트 어려움: RESTful API는 주로 테스트 시에 URL 경로나 쿼리 매개변수보다는 HTTP 헤더 정보를 기반으로 작동하는 경우가 많다. 이는 브라우저에서 직접 테스트하기 어렵게 만들 수 있으며, 별도의 도구나 플러그인을 사용해야 할 수도 있다. 예를들어 RESTful API를 사용하여 사용자 인증을 처리하는 경우, 사용자 이름과 비밀번호를 폼에 입력하고 "로그인" 버튼을 클릭해도 브라우저가 직접 API 요청을 보내는 것이 아니라, JavaScript 코드를 사용하여 HTTP POST 요청을 생성하고 서버로 보내야 한다. 이러한 요청은 브라우저의 URL 주소창에 직접 입력할 수 없으며, 브라우저의 개발자 도구나 별도의 API 테스트 도구를 사용해야 한다.

4. 익스플로러와 호환성 문제: 구형 브라우저(특히 익스플로러)에서는 모든 RESTful 기능을 지원하지 않을 수 있다. 이로 인해 특히 업그레이드하지 않은 브라우저를 사용하는 사용자에게는 문제가 발생할 수 있다.

 

6. REST API란?

- REST API란 REST의 원리를 따르는 API를 말한다.

- REST API를 올바르게 설계하기 위해서는 지켜야하는 몇가지 규칙이 있다.

 

1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.

Bad Example : http://khj93.com/Running/
Good Example : http://khj93.com/run/

2. 마지막에 슬래시("/")를 포함하지 않는다.

Bad Example : http://khj93.com/test/  
Good Example : http://khj93.com/test

3. 언더바 대신 하이픈을 사용한다.

Bad Example : http://khj93.com/test_blog
Good Example : http://khj93.com/test-blog

4. 파일확장자는 URI에 포함하지 않는다.

Bad Example : http://khj93.com/photo.jpg  
Good Example : http://khj93.com/photo

5. 행위를 포함하지 않는다.

Bad Example : http://khj93.com/delete-post/1  
Good Example : http://khj93.com/post/1

 

7. RESTFUL API란?

- REST의 원리와 REST API의 설계 규칙을 올바르게 지킨 시스템을 말한다.


* 정리

- REST API란 REST를 기반으로 만들어진 API를 의미한다. REST란 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미하는데, 구체적으로 HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. REST API는 REST의 원리를 따르는 API를 의미한다.

- RESTFUL API란 REST의 원리와 REST API의 설계 규칙(URI는 동사보다는 명사, 대문자보다는 소문자를 사용하고, 마지막에 슬래시 미포함, 언더바 대신 하이픈 사용, 파일확장자는 URI에 미포함, 행위를 포함하지 않는다)을 올바르게 지킨 시스템을 말한다.


학습 단계로 잘못된 정보가 있을 수 있습니다. 잘못된 부분에 대해 알려주시면 정정하도록 하겠습니다

참고 : https://meetup.nhncloud.com/posts/92

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

'이것저것 스터디📚 > CS 스터디' 카테고리의 다른 글

쿠키와 세션  (0) 2023.10.24
HTTP 대신 HTTPS를 사용해야하는 이유  (0) 2023.10.16
AJAX란?  (1) 2023.10.16
웹 서버와 WAS(Web Application Server)  (0) 2023.10.16
CORS란 무엇인가?  (1) 2023.10.16