REST API

NavDevJae·2021년 3월 24일
0

Rest API

목록 보기
1/1

REST란??

REST 정의

  • REST (Representational State Transfer)
  • 자원의 표현에 의한 상태 전달

자원의 표현

  • 리소스를 표현하기 위한 이름을 말한다.
  • 예를 들면, DB내의 차의 정보가 리소스라고 하면, 'cars'라고 하는 것은 자원의 표현이다.

상태 전달

  • 데이터가 요청되어지는 시점에서 자원의 상태 전달.
  • JSON 혹은 XML을 통해 데이터 주고받는 것이 일반적.

REST의 구체적인 개념

  • HTTP URI : 웹사이트의 이미지, 텍스트 등 모든 리소스의 고유한 ID
  • CRUD (Create:POST, Read:GET, Update:PUT, Delete:DELETE)

REST의 장단점

REST의 구성 요소

자원 (URI)

  • 클라이언트는 URI를 통해 서버에 자원에 대한 정보를 요청한다.
  • 서버는 이에 응답하여 서버 내부의 정보를 준다.
  • https://velog.io/dlskaghd234 에서 /dlskaghd234가 URI (다른 블로그로부터 내 블로그를 식별)

행위 (Verb) = HTTP Method

  • HTTP 프로토콜의 메소드 (GET, POST, PUT, DELETE)

표현 (Representation)

  • 클라이언트가 상태에 대한 변화 요청 시 server는 적절하게 응답.
  • JSON, XML, TEXT, RSS 등 여러 형태로 응답 가능하다.
  • JSON, XML이 일반적.

REST 특징

Server-Client (서버-클라이언트 구조)

  • 서버 : 자원 있는 side, 클라이언트 : 자원 요청하는 side
  • Rest server : API 제공하고 비즈니스 로직 처리
  • Client : 사용자 인증 등을 직접 관리한다.

Stateless (무상태성)

  • 서버는 각각의 요청을 별개의 것으로 인식한다.
  • 이전의 컨텍스트를 저장하지 않는다. (기억하지 않는다.)

Cacheable (캐시 처리가능)

  • 캐시 사용을 통해 응답시간 빨라진다. 대량의 요청을 효율적으로 처리가능.

Layered System (계층화)

  • 클라이언트는 rest API 서버만 호출할 수 있다.

REST API 설계 기본 규칙

리소스 원형 (Resource는 명사, 소문자를 사용)

Document (도큐먼트)

  • 객체 인스턴스와 유사하다.
  • 하나의 객체단위로 하는 단일 정보.
  • ex) 1, 2, 3, lee...
  • resource의 document이름은 단수 명사로!!!

Collection (컬렉션)

  • 서버에서 관리하는 document의 집합.
  • ex) projects...
  • resource의 collection이름은 복수 명사로!!!

Store (스토어)

  • 클라이언트에서 관리하는 document의 집합.
  • ex) classmates, favorites ....
  • resource의 store이름은 복수 명사로!!!

자원에 대한 행위는 HTTP METHOD

  • URI에 HTTP method가 들어가면 안된다.
    • GET/cars/delete/2 =====> DELETE/cars/2
  • URI 행위에 대한 동사 표현이 들어가면 안된다.
    • GET/cars/show/2 =====> GET/cars/2
    • GET/cars/insert/2 ====> POST/cars/2

URI 설계 기본 규칙

슬래시 구분자(/)는 계층 관계 나타낸다.

URI 마지막 문자로 슬래시 포함하지 않는다.

하이픈(-)은 URI 가독성을 높인다.

밑줄(_)은 URI에 사용하지 않는다.

  • 문자가 가끔가다 가려지기도 하기 때문에 사용하지 말자.

URI 경로에는 대문자가 아닌 소문자로!

파일 확장자는 URI에 포함하지 않는다.

profile
전직 항해사 출신 미래 개발자

0개의 댓글