글또 !

REST와 RESTful

integerJI 2023. 6. 10. 20:01

채용 공고를 보다 보면 “Rest API 개발 우대” 라는 항목을 쉽게 볼 수 있다.

그렇다면 여기서 Rest API는 무엇인가? 그리고 RestFul과는 어떤 차이가 있는지 궁금해서 공부해 보았다.

  1. REST
    1. Rest의 정의
      • REpresentational State Transfer라고 불린다.
      • 소프트웨어 개발 아키텍처의 한 방식.
      • 동작 위치는 네트워크 상 클라이언트와 서버 사이의 통신 방식 중 하나이다.
    2. 개념
      • 리소스 : 각각의 서비스가 제공하는 개별 항목마다 리소스가 존재한다.
      • 상태전달 : 클라이언트와 서버의 통신은 주로 HTTP 통신을 이용한다.
      • 메소드 : 대표적인 4가지를 사용한다. (GET, POST, PUT, DELETE)
      • 표현 방식 : JSON, XML, HTML등의 형식으로 표현하며 클라이언트에서는 이를 처리한다.
    3. 장점과 단점
      • Hypermedia API의 기본 원칙을 따르면서 충분한 범용성을 보장한다.
      • http 프로토콜을 활용하여 http의 캐싱 기능을 이용하여 응답을 캐시로 받을 수 있다. 이로인해 성능도 개선된다.
      • 다양한 디자인 서비스에서 발생할 수 있는 문제를 간결한 아키텍처 스타일로 문제를 최소화 할 수 있다.
      단점
      • Url 대신 헤더 값을 데이터로 전달할 때 어렵게 느껴질 수 있다.
      • 구형 브라우저 같은 경우 Put와 Delete 메서드를 사용할 수 없다.
      • 큰 방향은 아키텍처 스타일로서의 원칙을 가이드 해주지만 세부적인 구현 방식은 개발자마다 다를 수 있어 일관성이 부족할수도있다.
      • pushState를 지원하지 않는다.
    4. 장점
    5. 필요한 이유
      • 어플리케이션의 분리와 통합
      • 다양한 클라이언트의 등장 (웹, 안드로이드, ios..)
      • 고유한 리소스가 있기 때문에 용이한 업데이트 및 유지보수
  2. REST API
    1. REST API의 정의와 특징
      • REST 아키텍처 기반으로 API를 구현한 것
      • REST의 유연함이 마이크로서비스 아키텍처에서 컴포넌트와 어플리케이션을 연결하는 일반적인 방법으로 부상하게 되었다.
    2. REST API 디자인 원칙
      • 균일한 인터페이스 : REST API는 사용자의 이름이나 이메일 주소 등의 동일한 데이터 조각이 오직 하나의 URI 에 속함을 보장해야한다.
      • 클라이언트-서버 디커플링 : REST API 디자인에서 클라이언트와 서버 애플리케이션은 서로 간에 완전히 독립적이어야 한다.
      • Stateless : REST API는 서버측 세션을 필요로 하지 않으며 서버 애플리케이션은 클라이언트 요청과 관련된 데이터를 저장할 수 없다.
      • 캐싱 가능성 : 리소스를 클라이언트 또는 서버측에서 캐싱할 수 있어야 하며 서버 응답에는 전달된 리소스에 대해 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 한다.
      • 계층 구조 아키텍처 : REST API는 엔드 애플리케이션 또는 중개자와 통신하는지 여부를 클라이언트나 서버가 알 수 없도록 설계되어야 한다.
      • 코드 온디맨드 : 특정한 경우에는 응답에 실행 코드(예: Java 애플릿)를 포함할 수도 있다. 경우에 코드는 요청 시에만 실행되어야 한다.
  3. RESTful
    1. RESTful의 개념
      • RESTful은 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어
      • RESTful은 REST를 REST답게 쓰기 위한 방법으로 누군가가 공식적으로 발표한 것은 아니다.
      • 여기서 ful은 full의 줄임말이다.
    2. RESTful 하지 못한 경우
      • CRUD 기능을 모두 POST로만 처리하는 API
      • route에 resource, id 외의 정보가 들어가는 경우(/post/1)

요약하자면, REST는 아키텍처 스타일로서 네트워크 기반 시스템에서의 통신을 설명하는 개념이며, RESTful은 REST 원칙을 따르는 웹 서비스를 나타냅니다. RESTful 서비스는 REST 아키텍처 원칙을 준수하여 설계되어 클라이언트와 서버 간의 상호 작용을 용이하게 합니다.

참고 문서 :

https://www.ibm.com/kr-ko/topics/rest-apis

https://github.com/WeareSoft/tech-interview/blob/master/contents/network.md#rest와-restful의-개념

'글또 !' 카테고리의 다른 글

[회고] 글또  (1) 2023.07.16
kakao tech meet 후기, AI와 Chat GPT..  (0) 2023.05.11
로드 밸런싱(Load Balancing)  (0) 2023.05.10
chat gpt 활용  (0) 2023.03.19
[mssql] 인덱스를 타지 않는 쿼리  (0) 2023.03.19