코이팅

REST, REST API, RESTful 본문

CS

REST, REST API, RESTful

코이팅 2023. 1. 18. 16:19
728x90
반응형

1. REST란?

출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

1) REST의 정의

REST란 'Representational State Transfer'의 약자입니다. 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.

좀 더 구체적으로 이야기 하자면
1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
2. HTTP Method(POST, GET, PUT, DELETE)를 통해
3. 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

 

** [CRUD Operation]
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말로 REST에서의 CRUD Operation 동작 예시는 다음과 같습니다

 

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

2) REST의 구성 요소

REST는 다음과 같은 3가지로 구성이 되어있습니다.

  • 자원(Resource) : HTTP URI
  • 자원에 대한 행위(Verb) : HTTP Method
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

3) REST의 특징

  • Server-Client(서버-클라이언트 구조)
  • Stateless(무상태)
  • Cacheable(캐시 처리 가능)
  • Layered System(계층화)
  • Uniform Interface(인터페이스 일관성)

4) REST의 장단점

[장점]

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

[단점]

  • 표준이 자체가 존재하지 않아 정의가 필요하다.
  • HTTP Method 형태가 제한적이다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(Explorer)

2. REST API란?

출처 : https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo

1) REST API의 정의

REST API란 REST의 원리를 따르는 API를 의미합니다. 즉 , REST 기반으로 서비스 API를 구현한 것입니다.
OpenAPI(누구나 사용할 수 있는 공개된 API) 는 대부분 REST API를 제공합니다.

 

**[API란?]

데이터와 기능의 집합을 제공하여 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환가능 하도록 하는 것입니다.

2) REST API의 특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있습니다.
  • REST는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있습니다.
  • 즉, REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작할 수 있습니다.

3) REST API의 작동 방식

REST API는 HTTP 요청을 통해 통신하여 데이터 생성, 읽기, 업데이트 및 삭제 기능을 완료합니다. CRUD 작업이라고도 합니다. REST는 요청된 리소스에 대한 정보를 제공하고 리소스로 수행할 작업을 설명하는 네 가지 방법을 사용합니다.

  • POST — 리소스 생성
  • GET — 리소스 가져오기
  • PUT — 리소스 업데이트
  • DELETE — 리소스를 삭제합니다.

4) REST API의 설계 규칙, 예시

출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

- URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 합니다.

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

 

- 마지막에 슬래시 (/)를 포함하지 않습니다.

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

 

- 언더바 대신 하이폰을 사용합니다.

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

 

- 파일확장자는 URI에 포함하지 않습니다.

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

 

- 행위를 포함하지 않습니다.

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

 

**[참고 응답상태코드]

- 1xx : 전송 프로토콜 수준의 정보 교환

- 2xx : 클라어인트 요청이 성공적으로 수행됨

- 3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함

- 4xx : 클라이언트의 잘못된 요청

- 5xx : 서버쪽 오류로 인한 상태코드

2. RESTful이란?

1) RESTful의 정의

RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어입니다.

‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있습니다. RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아닙니다.

즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭됩니다.

2) RESTful의 목적

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

**[RESTful 하지 못한 경우]

ex1) CRUD 기능을 모두 POST로만 처리하는 API
ex2) route에 resource, id 외의 정보가 들어가는 경우(/students/updateName)

 

[참고]

http://www.incodom.kr/RestFul_API

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

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

728x90
반응형
Comments