RESTful API

chp9419·2021년 6월 13일
0

🙌REST 란 ?

  • Representational State Transfer 줄임말 이다.
  • 네트워크 통신을 보다 확장 가능하고 유연하게 만들기 위한 일련의 설계 원칙
  • 월드 와이드 웹 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처다.
  • REST는 웹 기존 기술을 계승받아 HTTP 프로토콜 있는 그대로 활용하기 때문에 웹의 장점을 최대한 활용 가능한 아키텍처 이다.

✌REST 개발 배경

  • 로이 필딩이 웹을 망가트리지 않고 어떻게 HTTP를 개선 할수 있을까에 질문을가지고
    2000년 박사 학위 논문에서 REST를 발표했다.

REST 개념

  • HTTP URI를 통해 자원을 명시한다.❗❗❗

  • 자원을명시하되 HTTP method를 사용하여 CRUD를 적용한다.❗❗❗

  • REST는 자원기반구조(ROA)의 설계중심이고 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

  • 웹의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

REST 특징

  • Client-Server
    사용자들에게 제공하는 인터페이스인 유저인터페이스와 데이터스토리지 등의 서버 내부 작업을 분리함으로서 유저인터페이스는 여러 플랫폼에서 이식성을 향상, 서버는 그 구성요소를 단순화 하여 확장성을 단순화할 수 있다.

  • Stateless(무상태성)
    서버와 클라이언트 상태가 없을 의미하는 것이 아니라 서로의 상태를 알 필요가 없다는
    뜻임. 서버는 과거 요청한 기록을 유치하지 않고 요청은 독립형으로 처리된다.

  • cache(캐시)
    요청에 대한 응답내의 데이터에 요청은 캐시가 가능한지 불가능한지 명시해야 된다.

  • uniform interface(유니폼 인터페이스)
    특정언어와 기술에 종속되지 않으며 HTTP 표준만 따르면 모든 플랫폼에서 사용가능하고
    URI로 지정한 리소스에 대한 조작을 가능하게 하는 아키텍처 스타일이다.

  • layered system(계층화)
    계층화된 시스템 아키텍처를 사용하여 각 구성들이 간의 계층을 마음대로 상호작용 할 수
    없도록 제한 함으로써 인터페이스를 일원화 할수 있다.

  • code-on-demand
    서버가 네트워크로 클라이언트에 전달한 자바스크립트 등과 같은 프로그램들은 그 자체로
    실행이될 수 있어야 한다.

    평소에 정적 테이터를 xml 또는 json에 담아서 client로 보내고 client가 이것을 가공한다.
    다만 code on demand는 client에 보내는 데이터를 바로 실행 가능한 코드를 보내서 이것
    을 client에서 실행하는 것을 말한다.

Uniform Interface 4가지 조건

  • identification of resources(자원확인)
  • manipulation of resources through representations(리소스 조작)
  • self-descriptive messages(자체설명 메시지)
  • hypermedia as the engine of application state.(HATEOAS)

REST 규칙

  • URI는 정보의 자원을 표현해야한다.
  • 자원에 대한 행위는 HTTP 메소드로 표현해야한다.
  • URI 마지막 문자는 슬래시(/)를 포함하지 않는다.
  • 하이픈(-)은 URI 가독성을 높이는데 사용한다.
  • 밑줄(_)은 URI에 사용하지 않는다.
    • 글꼴따라 차이가 있찌만 밑줄때문에 문자가 가려지는 경우가 발생하기 때문이다.
  • URI 경로에는 소문자가 적합하다.
    • 대문자에 따라 다른 리소스로 인식하기 때문이다.
  • 파일 확장자는 URI에 포함되지 않는다.
    • 대신 Aaccept header를 사용한다.

reference
https://codewords.recurse.com/issues/five/what-restful-actually-means
https://www.youtube.com/watch?v=RP_f5dMoHFc&t=1149s

profile
주어진 문제는 해결하고 공부하고 성장한다.

0개의 댓글