REST API

2021. 4. 27. 10:03·개발중/Web
목차
  1. REST API 
  2. REST 아키택처에 적용되는 6가지 제한 조건
  3. REST 인터페이스의 원칙
  4. REST 의 주요 목표
728x90
반응형

REST API 

Representational state transfer

REST 는 분산 하이터 미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.

REST 는 네트워크 아키택쳐 원리의 모음이다.

            네트워크 아키텍쳐 원리란 자원을 정의하고 자원에 대한 주소를 지정하는 전반을 일컫는다.

            웹 상의 자료를 HTTP 위에서 SOAP 이나 쿠키를 통한 세션 트래킹 같은 별도의 전송 계층 없이

            전송하기 위한 아주 간단한 인터페이스를 말한다.


REST 아키택처에 적용되는 6가지 제한 조건

  • 인터페이스 일관성
    • 일관적인 인터페이스로 분리 되어야 한다.
  • 무상태
    • 각 요청 간 클라이언트의 콘텍스트가 서버에 저장 되어서는 안된다.
  • 캐시 처리 가능
    • www 에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
    • 잘 관리 되는 캐싱은 클라이언트 - 서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability 와 성능을 향상 시킨다.
  • 계층화
    • 클라이언트는 보통 대상 서버에 직접 연결 되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 로드 밸런싱 기능이나 공유 캐시 기능을 제공함으로써 시스템 규모 확장성을 향상 시키는 데 유용하다.
  • Code on demand(optional)
    • 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능읗 롹장 시킬 수 있다.
  • 클라이언트 서버 구조
    • 아키텍쳐를 단순화 시키고 작은 단위로 분리 함으로써 클라이언트 서버의 각 파트가 독립적으로 개선 될 수 있도록 해준다.

REST 인터페이스의 원칙

  • 자원의 식별
    • 요청 내에 기술된 개별 자원을 식별할 수 있어야 한다.
    • 웹 기반의 REST 시스템에서의 URL 의 사용을 예로 들 수 있다.
    • 자원 그 자체는 클라이언트가 받는 문서와는 개념적으로 분리되어 있다. 예를 들어 서버는 데이터베이스 내부의 자료를 직접 전송하는 대신, 데이터 베이스 레코드를 HTML, XML 이나 JSON 등의 형식으로 전송한다.
  • 메세지를 통한 리소스의 조작
    • 클라이언트가 어떤 자원을 지칭하는 메세지와 특정 메타 데이터만 가지고 있다면 이것으로 서버 상의 해당 자원을 변경, 삭제 할 수 있는 충분한 정보를 가지고 있는 것이다.
  • 자기서술적 메세지
    • 각 메세지는 자신을 어떻게 처리해야 하는지에 대한 충분한 자료를 포함해야 한다.
    • 예를 들어 MIME type 과 같은 인터넷 미디어 타입을 전달한다면, 그 메세지에는 어떤 파서를 이용해야 하는지에 대한 정보도 포함해야 한다. 
    • 미디어 타입만 가지고도, 클라이언트는 어떻게 그 내용을 처리해야 할지 알 수 있어야 한다.
    • 메세지를 이해하기 위해 그 내용까지 살펴봐야 한다면, 그 메세지는 자기 서술적이 아니다.
    • 예를 들어 단순히 "application/xml" 이라는 미디어 타입은, 실제 내용을 다운로드 받지 않으면 그 메세지만 가지고는 무엇을 해야 할지에 대해 충분히 알려주지 못한다.
  • 애플리케이션의 상태에 대한 엔진 으로서 하이퍼 미디어
    • 만약에 클라이언트가 관련된 리소스에 접근하기를 원한다면, 리턴되는 지시자에서 구별 될 수 있어야 한다. 충분한 콘텍스트 속에서의 URL 을 제공해주는 하이터 텍스트 링크를 예로 들 수 있다.

REST 의 주요 목표

  • 구성 요소 상호작용의 규모 확장성
  • 인터페이스의 범용성
  • 구성 요소의 독립적인 배포
  • 중간적 구성요소를 이용해 응답 지연 감소, 보안을 강화, 레거시 시스템을 인캡슐레이션

 

728x90
반응형
저작자표시 (새창열림)

'개발중 > Web' 카테고리의 다른 글

비동기와 동기에 대해서 알아보기 - 예시 🙌  (1) 2022.04.15
테스트 DB 와 운영 DB 관리 하는 법  (0) 2021.10.05
다음 주소창 이용하기  (0) 2020.08.05
Web 이미지를 a 태그로  (0) 2020.08.04
댓글 저장, 수정, 삭제 기능 구현하기  (0) 2020.08.03
  1. REST API 
  2. REST 아키택처에 적용되는 6가지 제한 조건
  3. REST 인터페이스의 원칙
  4. REST 의 주요 목표
'개발중/Web' 카테고리의 다른 글
  • 비동기와 동기에 대해서 알아보기 - 예시 🙌
  • 테스트 DB 와 운영 DB 관리 하는 법
  • 다음 주소창 이용하기
  • Web 이미지를 a 태그로
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크 관리사 학점
    Git 저장소
    VUE
    네트워크 관리사 실기
    스프링
    쿠버네티스
    알고리즘
    jpa
    네트워크 관리사 2급 실기
    리눅스 마스터 요약
    네트워크 관리사 요약
    쿠버네티스 스터디
    REST API
    BackendDevelopment
    네트워크 관리사 자격증
    redis
    springboot
    파이썬
    리눅스 마스터 1급 정리
    네트워크 관리사
    리눅스 1급 요약
    리눅스 마스터 1급 요약
    java
    리눅스 마스터
    파이썬 알고리즘
    Spring
    docker
    네트워크 관리사 2급
    git
    리눅스 마스터 1급
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
REST API

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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