항해99/공부

RESTful API ?

2022. 10. 9. 14:18
목차
  1. REST
  2. RESTful API
728x90
반응형

REST

  • REST(Representational State Transfer)의 약자
  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미
  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  • HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해
  • 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미

 

CRUD Operation

  • Create : 데이터 생성(POST)
  • Read : 데이터 조회(GET)
  • Update : 데이터 수정(PUT, PATCH)
  • Delete : 데이터 삭제(DELETE)

 

 

REST 구성 요소

  1. 자원(Resource) : HTTP URI
  2. 자원에 대한 행위(Verb) : HTTP Method
  3. 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load

 

 

REST의 특징

  1. Server-Client(서버-클라이언트 구조)
  2. Stateless(무상태)
  3. Cacheable(캐시 처리 가능)
  4. Layered System(계층화)
  5. Uniform Interface(인터페이스 일관성)

 

 

REST의 장단점

 

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 자체가 존재하지 않아 정의가 필요하다.
  • HTTP Method 형태가 제한적이다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(익스폴로어)

RESTful API

RESTFUL이란 REST의 원리를 따르는 시스템을 의미.

하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아니다.  

REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있으며,

모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게

지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한

시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있다.

 

 

RESTful API 설계 예시

 

1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.

  • Bad Example http://khj93.com/Running/ 
  • Good Example  http://khj93.com/run/

 

2. 마지막에 슬래시 (/)를 포함하지 않는다.

  • Bad Example http://khj93.com/test/
  • Good Example  http://khj93.com/test

 

3. 언더바 대신 하이폰을 사용한다.

  • Bad Example http://khj93.com/test_blog
  • Good Example  http://khj93.com/test-blog

 

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

  • Bad Example http://khj93.com/photo.jpg
  • Good Example  http://khj93.com/photo

 

5. 행위를 포함하지 않는다.

  • Bad Example http://khj93.com/delete-post/1
  • Good Example  http://khj93.com/post/1
728x90
반응형

'항해99 > 공부' 카테고리의 다른 글

객체 지향 (Object-Oriented)  (0) 2022.10.19
주특기 주차 11조 (Node.js) 토론  (0) 2022.10.04
TCP Socket ?  (0) 2022.10.04
HTTP / Web Server  (0) 2022.09.30
2022년 9월 17일 밤새도록 스파르톤 !!  (1) 2022.09.17
  1. REST
  2. RESTful API
'항해99/공부' 카테고리의 다른 글
  • 객체 지향 (Object-Oriented)
  • 주특기 주차 11조 (Node.js) 토론
  • TCP Socket ?
  • HTTP / Web Server
JangKroed
JangKroed
JangKroed
JangKroed
JangKroed
전체
오늘
어제
  • FindAllPost() (139)
    • 항해99 (40)
      • TIL (19)
      • WIL (13)
      • 공부 (7)
    • 개발일지 (70)
      • 스파르타 게임개발 종합반 (1)
      • Error (5)
      • TIL (64)
    • Language (16)
      • Javascript (7)
      • Node.js (5)
      • TypeScript (0)
      • Nest.js (0)
      • Unity (4)
    • DataBase (3)
      • MySQL (2)
      • MongoDB (1)
    • DevOps (4)
      • AWS (4)
      • Docker (0)
    • Tools (5)
      • VScode (1)
      • Git (1)
      • libraries (3)
    • 끄적끄적 (1)
      • 메모 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

깃허브

공지사항

인기 글

태그

최근 댓글

최근 글

반응형
250x250
hELLO · Designed By 정상우.
JangKroed
RESTful API ?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.