[용어 사전] REST / RESTFull API

in rest •  7 years ago  (edited)

rest_.png

REST

Representational State Transfer 의 약자로 어떤 자원에 대한 대표값을 사용하여 상태(지속적 변경되는 값)를 전달 하는 것

  • 넓은 의미 : 자원을 이름으로 구분하고 해당 자원의 상태를 주고 받는 모든 것
  • 좁은 의미 : HTTP를 통해 CRUD를 실행하는 API

REST 구성

  1. 자원 (Resource) - URI
  2. 행위 (Verb) - HTTP Method
  3. 표현 (Representations)

REST 특징

  1. Uniform :
    모든 플랫폼에 사용 가능하며, URI로 지정한 리소스에 대한 조작이 가능

  2. Stateless :
    HTTPSession과 같은 컨텍스트 저장소에 상태정보 저장/관리하지 않음
    API 서버는 들어오는 요청 단순 처리

  3. Cacheable :
    HTTP 기존의 웹 표준을 그대로 사용하므로, 웹에서 사용하는 기존 인프라 그대로 활용 가능
    대량의 요청을 효율적으로 처리하기 위함

  4. Self-descriptiveness :
    동사(Method) + 명사(URI)로 이루어져있어 어떤 Method에 무슨 행위를 하는지 알 수 있음
    JSON 포맷으로 직관적 이해 가능 구조

  5. Client - Server 구조 :
    서버 - API 제공
    Client - 사용자 인증, 컨텍스트(세션, 로그인 정보 등) 관리

  6. 계층형 구조 :
    사용자 인증, 로드밸런싱, 암호화 계층 추가가 가능하여 구조상의 유연성을 둘 수 있고, PROXY, GW 같은 네트워크 기반의 중간매체를 사용할 수 있게 함

RESTFull API

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것

REST API 디자인

  1. URI는 정보의 자원을 표현해야 함
  2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현
    REST.png

POST 와 PUT의 차이

POST

클라이언트가 리소스의 위치를 지정하지 않았을때 리소스를 생성하기 위해 사용하는 연산

PUT

리소스의 위치가 명확히 지정된 요청의 리소스를 생성하기 위해 사용하는 연산

todo_restfull.png

URI 설계 시, 주의 사항

  • 슬래시(/) 구분자는 계층 관계를 나타내는 데 사용
    ex) hxxp://secmon.com/macos/test
  • URI는 마지막 문자로 슬래시(/) 포함하지 않음
  • 하이픈(-)은 URI 가독성 높임 / 밑줄(_) 사용하지 않음
  • URI 경로에는 소문자가 적합
  • 파일확장자는 URI에 포함하지 않음
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!