본문 바로가기
Back-end

RESTful

by pinok1o 2021. 5. 31.

Representational State Transfer

표현(HTTP URL), 상태(HTTP Method), 전달

REST란 아키텍쳐 스타일의 제약조건을 모두 만족하는 시스템

  1. Client-Server
  2. Stateless
  3. Cache
  4. Uniform Interface
  5. Layered System
  6. Code-On-Demend

 

Level0

RPC 기반 Remode Procedure Call, 주고받는건 XML (Client - Server Model)

HTTP의 특성

  • Client가 Server에 Request를 보내고, Server가 Client에 Response를 보내는 구조
  • Stateless - 모든 요청은 요청에 필요한 모든 정보를 가지고 있어야 한다

 

계층으로 구성 가능해야 한다 - Server측에서 gateway나, 암호화, 로드벨런싱을 하는 중간 단계가 추가되어도 Client는 상관없어야 함

Representation의 형태는 content-type으로 결정됨

 

Level1

리소스 도입 - 단일 리소스와 통신하는게 아니라 개별 리소스와 통신을 함

Resource가 하나 이상의 유일한 특정 주소인 URI로 식별되는지?

 

Level2

GET, PUT, POST등 Method사용

  • HTTP Method로 CRUD를 표현해야 한다
  • 안전한 오퍼레이션과, 안전하지 않은 오퍼레이션 간의 분리(멱등성, )

메세지는 스스로를 설명해야한다

Cache - GET은 매번 같은 결과를 만들기때문에 캐싱이 가능하다

 

Level3

HATEOAS

  • 클라이언트가 요청을 할때 요청에 필요한 URI를 Response에 담아서 보내는것
  • 하이퍼링크를 통해서 애플리케이션의 상태가 전이된다

 

Code On Demand

  • 서버가 네트워크를 통해 클라이언트에 프로그램을 전달하면 그 프로그램이 클라이언트에서 실행될 수 있어야 한다 - javascript

 

Method와 Status Code 를 용도에 맞게 사용하여야 하고 HTTP 헤더와 Lihk를 신경쓰면 RESTful한 서비스를 설계할 수 있다.

 

 

Reference

'Back-end' 카테고리의 다른 글

MVC 패턴  (0) 2021.05.27
DTO, VO vs DAO  (0) 2021.05.25

댓글