[CS공부] 네트워크 구조(10)-REST, RESTful (Get과 Post의 차이)

Min Kim·2023년 2월 28일
0

CS 공부

목록 보기
11/15

들어가기 전에


rest와 restful에 대해 알아봅시다.

1. 개념 비교


Video Label

  • REST(Representational State Transfer) : 클라이언트와 서버의 통신 방식으로 URI와 HTTP를 이용한, 통신 목적의 아키텍처 스타일
  • RESTful : REST가 적용된 시스템
  • REST API : REST가 적용된 API, REST API를 제공하는 시스템은 RESTful

😜 추가 지식

  • REST의 특징

    1. 일관된 인터페이스
      URI 사용, HTTP메소드 사용, RPC 미호출 등의 지정된 인터페이스 준수
    2. 클라이언트 서버
      클라이언트는 서버에 요청, 서버는 응답
    3. 무상태성
      클라이언트의 세션과 쿠키같은 컨텍스트를 서버에 저장하지 않으므로 서버 구현이 단순해짐
    4. 캐시 가능
      서버의 응답 메시지는 캐싱될 수 있음
    5. 계층화된 시스템
      계층별로 기능이 분리, 중간 계층의 기능이 변경되어도 통신에 영향을 주지 않음
    6. 주문형 코드(선택)
      손쉬운 데이터 처리를 위해 서버는 클라이언트에서 실행될 스크립트를 전송할 수 있음
  • URI(Uniform Resource Identifier) : 문서, 그림, 영상 등의 자원식별 용 이름

  • URL(Uniform Resource Locator) : 자원의 위치

  • 아키텍쳐 스타일 : 아키텍쳐의 종류 e.g. 클라이언트/서버, 저장소, 파이프/필터, REST

2. REST


  • 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미

  • HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미

  • 구성 요소

    • 자원(Resource): URI
      • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재
      • 자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI
      • Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청
    • 행위(Verb): HTTP Method
      • HTTP 프로토콜의 Method를 사용
      • HTTP 프로토콜은 GET, POST, PUT, DELETE 와 같은 메서드를 제공
    • 표현(Representation of Resource)
      • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보냄
      • REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있음
      • JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적

😜 추가 지식

  • 자원: 해당 소프트웨어가 관리하는 모든 것
    -> Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체

  • 자원의 표현: 그 자원을 표현하기 위한 이름
    -> Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정함.

  • 상태(정보) 전달 : 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달
    ->JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적

3. REST API 설계 원칙


1) URI는 리소스를 표현

  • URI는 리소스를 표현하는 데 중점을 둠
  • 리소스를 식별할 수 있는 이름은 동사보다는 명사를 사용
#bad
GET /getTodos/1
GET /todos/show/1

#good
GET /todos/1

2) 리소스에 대한 행위는 HTTP 요청 메서드로 표현

  • 주로 5가지 메서드(GET, POST, PUT, PATCH, DELETE)를 사용하여 CRUD를 구현

  • 리소스에 대한 행위는 HTTP 요청 메서드를 통해서만 표현하며 URI에 표현하지 않음.

# bad
GET /todos/delete/1

#good
DELETE /todos/1

3) 네이밍 규칙을 준수

  • 슬래시(/)는 계층 관계를 나타낼 때 사용
  • 소문자를 사용
  • 밑줄(_)은 사용하지 않고 하이픈(-)을 사용
  • 확장자(.txt, .png 등)를 사용하지 않음
  • URI의 마지막에 슬래시(/)를 포함하지 않음

😜 추가 지식

  • GET과 POST 차이
    • 사용목적
      • GET : 서버의 리소스에서 데이터를 요청
      • POST : 서버의 리소스를 새로 생성하거나 업데이트
    • 요청 시 body 유무
      • GET : URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없음
      • POST : body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재
    • 멱등성 (idempotent)
      - GET 요청은 멱등이며, POST는 멱등이 아님

      멱등 : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
      => GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같지만, POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에 멱등이 아님

참고


해당 사이트의 내용을 참고로 작성했습니다. 추후에 더 알게 되는 내용들을 추가하겠습니다.

TIL 38 Node.js- Restful API
[Network] REST란? REST API란? RESTful이란?
REST란? REST API 와 RESTful API의 차이점
REST란? REST API / RESTful API차이점
[ Network ] REST란? / Rest API와 Restful API의 차이점 / REST 규칙
[Web] REST vs RESTful vs REST API(RESTful API)
[간단정리] REST, REST API, RESTful 특징
REST API(RESTful API, 레스트풀 API): 개념, 서버, 사용 방법
API, HTTP API, REST API 차이
REST(Representational State Transfer)란? 꼭보세요

profile
Better & Better 꾸준히 성장하는 개발자

0개의 댓글