[TIL]2022/07/19 REST/ RESTful

Calvin Park·2022년 7월 20일
0

개발을 하는 도중 갑자기 궁금해져서 하루를 마무리할 겸 REST 와 RESTful의 차이점을 간략하게 적어 봐야겠다.

REST(REpresentational State Transfer)

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

  • 자원 : 해당 소프ㅡ트웨어가 관리하는 모든 것(문서 ,그림, 데이터 등)
  • 표현 : 그 자원을 표현하기 위한 이름
  • 상태 전달: 데이터가 요청되는 시점에 자원의 상태를 전달한다. (JSON 혹은 XML을 통해 데이터를 주고 받는 것이 일반적)

간단하게 REST는 기본적으로 웹의 기존 기술과 HTTP프로토콜을 그대로 활용하기 때문에, 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.

⭐️⭐️⭐️⭐️⭐️REST는 네트워크 상에서 Client와 Server사이의 통신 방식 중 하나이다.
그럼 무슨 방법으로 통신을 할 것이냐?
오직 URI을 통해서 통신을 할 수 있으며 그 어떤 자원에 대해 CRUD(Create, Read, Update, Delete)연산을 수행하기 위해 GET, POST,PUT(Patch), DELETE을 method를 사용한다.⭐️⭐️⭐️⭐️⭐️

URI vs URL
URL 은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미한다.
URI는 Unoform Resource Identifier로 인터넷 상의 지원을 식별하기 위한 문자열의 구성이다.
URL>URL 즉 URI가 URL 보다 포괄적인 범위라고 할 수 있다.

REST의 구성 요소

1. 자원(Resource) - URI

  • 모든 자원에는 고유한 ID가 존재하고, 이 자원은 Server에 존재합니다.
  • 자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI 입니다.
  • client는 URI를 이용해 자원을 지정하고 해당 자원의 상태에 대한조작을 Server에 요청합니다.

2. 행위(Verb)- Mehtod

  • HTTP 프로토콜의 Method를 사용한다.
    GET: Read: 정보 요청, URI가 가진 정보를 검색하기 위해 서버에 요청한다.
    POST: Create: 정보 입력, 클라이언트에서 서버로 전달하려는 정보를 보낸다
    PUT: Update:정보 업데이트, 주로 내용을 갱신하기 위해 사용한다.
    PATCH: Update:정보 업데이트 데이터 일부만 업데이트 할떄
    DELETE: Delete:정보 삭제, 안정성 문제로 대부분 서버에서 비활성화 한다.

3. 표현: Representation of Resource

  • client와 Server가 데이터를 주고 받는 형테로 JSON,XML등이 있다.
  • JSON,XML을 통해 데이터를 주고 받는 것이 일반적

Rest의 특징

1.Server-client

  • 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client가 됩니다.
    • REST Server는 API를 제공하고 비즈니스 로직 처리 및 저장을 책임지고 Client는 사용자 인증이나 context(세션, 로그인 정보) 등을 직접 관리하고 책임집니다.
    • 역확을 확실히 구분 시킴으로써 서로 간의 의존성을 줄인다.

2. Stateless(무상태)

  • HTTP 프로토콜은 Stateless Protocol이므로 REST역시 무상태성을 갖습니다.

  • Client의 context를 Server에 저장하지 않는다.

    • 구현이 단순하다, 세션과 쿠키와 같은 Context를 신경쓰지 않는다.
  • Server는 각각의 요청을 완전히 별개의 것으로 인식하고 처리한다.

    • 각 API 서버는 Client의 요청만을 단순 처리한다.
    • 즉 잊던 요청이 다음 요청의 처리에 연관되어서는 안된다(DB에 의해 바뀌는 것은 혀용)
    • Server 의 처리 방식에 일관성을 부여하기 때문에 서비스의 자유도가 높아진다.

3. Cacheable(캐시 처리 기능)

  • 웹 표준 HTTP 프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용할 수 있다.
    • 즉 HTTP가 가진 가장 강력한 특징 중 하나인 캐싱 기능을 적용할 수 있다.
    • HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag 또는 E-tag를 이용해 캐싱을 구현한다.
  • 대량의 요청을 효율적으로 처리할 수 있다.

4. Layered System(계층 구조)

  • Client는 REST API Server만 호출한다.
  • REST Server는 다중 계충으로 구성될 수 있다.
    • 보안, 로드, 밸런싱, 암호화, 등을 위한 계층을 추가하여 구조를 변경할 수 있다.
    • Proxy Gateway와 같은 네트워크 기반의 중간 매체를 사용할 수 있다. BUT Client는 Server 직접 통신하는지, 중간 서버와 통신하는지는 알 수 없다.

5.Uniform Interface(인터페이스 일관성)

  • URI로 지정한 Resource에 대한 요청을 통일되고 한정적으로 수행하는 아키텍처 스타일을 의미한다.
    -HTTP표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하며 Loosey Coupling(느슨한 결함) 형태를 갖는다. -> 특정 언어나 기술에 종속 되지 않음

6. Self-Descriptiveness(자체 표현)

  • 요청 메시지만 보고도 쉽게 이해할 수 있는 자체 표현 구조로 되어있다.

REST API??

정의:

REST의 특징 기반으로 서비스 API를 구현한 것.
최근 OpenAPI, 마이크로 서비스(하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 기업 대부분은 REST API를 제공한다.

REST API의 특징

  • REST API의 가장 특 특징은 ⭐️⭐️⭐️⭐️⭐️각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능함.

REST API 디자인 가이드

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

2. 자워에 대한 행위는 HTTP Method(GET, POST, PUT(PATCH), DELETE)로 표현한다. Method는 URI에 포함하지 않음!

REST API의 설계 규칙

  1. URI는 명사를 사용한다 (리소스명은 동사가 아닌 명사를 사용해야 한다.)

1-1 아래와 같은 동사를 사용하지 말것!

  • /getAllProducts
  • /getProductsById
  • /createProducts
  • /updateProducts
  • /deleteProducts
  1. 슬래시(/)로 계층 관계를 표현한다.
  2. URI 마지막 문자로 슬래시를 포함하지 않는다
  3. Underscore를 사용하지 않고 Hyphen을 사용한다
  4. URI는 소문자로만 구성한다
  5. HTTP응답 상태 코드 사용 -> 클라이언트는 해당 요청에 대한 실패, 처리완료 또는 잘못된 요청 등에 대한 피드백을 받아야 한다.
  6. 파일확장자는 URI에 포함하지 않는다.

그래서 마지막 결론!

REST API 와 RESYful API의 차이점은 무엇일까?

⭐️⭐️⭐️⭐️⭐️RESTful은 REST의 설계규칙을 잘 기켜서 설계된 API를 RESTful한 API라고 한다.
THEREFORE REST의 원리를 잘 따르는 시스템을 RESTful이란 용어로 지칭된다!⭐️⭐️⭐️⭐️⭐️

RESTful하게 만든 API는 보내는 요청을 주소만으로도 어떤 것을 요청하는지 파악이 가능해야 한다.
www.shoppingmall.com/brands 의 주소는 쇼핑몰의 브랜드들의 목록을 받는요청일 것이며

www.shoppingmall.com/brands/nike의 주소는 쇼핑몰의 나이크브랜드를 붙는다는것이다
또는
www.shoppingmall.com/brands/nike/products/basketball 이면 쇼핑몰의 나이키의 제품의 농구제품을 받는것이다.

www.shoppingmall.com/brands/nike/products/basketball?gender=mal&count30&page=3 이면 쇼핑몰의 나이키제품의 농구제품의 남성꺼의 30개를 보여주면서 현재 페이지는 3번째라는 것을 추측 할 수 있다.

출처: https://dev-coco.tistory.com/97

profile
Personal Velog Note

0개의 댓글