[Spring] RESTful

고지훈·2022년 1월 3일
0

Spring

목록 보기
8/26
post-thumbnail

REST(Representational State Transfer) 자원의 상태 전달

  • Client, Server: 클라이언트와 서버가 서로 독립적으로 분리되어 있어야 한다.
  • Stateless: 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
  • Cache: 클라이언트는 서버의 응답을 Cache할 수 있어야 한다. 클라이언트가 Cache를 통해 응답을 재사용할 수 있어야하고 이를 통해 서버의 부하를 낮출 수 있다.
  • 계층화: 서버와 클라이언트 사이에, 방화벽, 게이트웨이, 프록시등 다양한 계층 형태로 구성이 가능해야하며 이를 확장할 수 있어야 한다.
  • 인터페이스 일관성: 인터페이스의 일관성을 지키고, 아키텍처를 단순화시켜 작은 단위로 분리하여, 클라이언트, 서버가 독립적으로 개선될 수 있어야 한다.
  • Code on Demand: 자바 애플릿, 자바스크립트 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코들르 실행할 수 있어야 한다.

[인터페이스 일관성]

  • 자원의 식별
    • 웹 기반의 REST에서는 리소스에 접근을 할 때 URI를 사용한다.
    • ex) https://google.co.kr/user/100 => Resource: user / 식별자: 100
  • 메시지를 통한 리소스 조작
    • HTTP Header부분에 content-type을 통해서 데이터의 타입을 지정해줄 수 있다.
    • 리소스 조작을 위해 데이터 전체를 전달하지 않고, 이를 메시지로 전달
  • 자기 서술적 메시지
    • 요청하는 데이터가 어떻게 처리되어야 하는지 충분한 데이터를 포함할 수 있어야 한다.
  • 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어
    • REST API를 개발할 때 단순히 Client요청에 대한 데이터만 응답해주는 것이 아닌 관련된 리소스에 대한 Link정보까지 같이 포함되어야 한다.
profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글