REST란? REST API / RESTful API차이점

솜주먹·2022년 10월 11일
0

항해99

목록 보기
19/37
post-thumbnail

📖 REST

💬 정의

  • "REpresentational State Transfer" 의 약자로
    자원을 이름(자원의 표현)으로 구분해 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미
  • 즉, 자원(resource)의 표현(representation)에 의한 상태 전달을 뜻함
    1. 자원 : 해당 SW가 관리하는 모든 것 (문서, 그림, 데이터 등)
    1. 표현 : 그 자원을 표현하기 위한 이름 (학생 정보가 자원이라면 'students' 등)
    2. 상태 전달 : 데이터가 요청되는 시점에 자원의 상태를 전달 (JSON 혹은 XML)
  • 네트워크 상의 Client와 Server 사이의 통신 방식 중 하나

💬 개념

어떤 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해
URI(Resource)로 GET, POST 등의 방식(Method)을 사용하여 요청을 보내며,
요청을 위한 자원은 특정한 형태(Representation of Resource)로 표현

❓ URI와 URL의 차이점

  • URI : Uniform Resource Locator로 인터넷 상 자원의 위치
  • URL : Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성
    1. URI는 URL을 포함함

💬 구성 요소

  1. 자원(Resource) - URI
    • 모든 자원에는 고유한 ID가 존재하고, 이 자원은 Server에 존재함
    • 자원을 구별하는 ID는 '/exgroups/:exgroup_id'와 같은 HTTP URI 임
    • Client는 URI를 이용해 자원을 지정하고 해당 자원의 상태(정보)에 대한
      조작을 Server에 요청
  2. 행위(Verb) - Method
    • HTTP 프로토콜의 Method(GET, POST, PUT, PATCH, DELETE)를 사용
    • GET : Read, 정보 요청, URI가 가진 정보를 검색하기 위해 요청
    • POST : Create, 정보 입력, 클라이언트가 서버로 정보를 전달
    • PUT : Update, 정보 업데이트, 데이터 전체를 바꿀때
    • PATCH : Update, 정보 업데이트, 데이터 일부를 바꿀때
    • DELETE : Delete, 정보 삭제, 안정성 문제로 서버에서 대부분 비활성화함
  3. 표현(Representation of Resource)
    • Client와 Server가 데이터를 주고받는 형태로 JSON, XML, TEXT, RSS 등이 있음
    • JSON, XML을 통해 데이터를 주고 받는 것이 일반적

💬 특징

  1. Server-Client (서버-클라이언트 구조)
    • 자원이 있는 쪽이 Server, 자원을 요청하는 쪽이 Client
  2. Stateless (무상태)
    • HTTP 프로토콜은 Stateless Protocol이므로 REST 역시 무상태성
  3. Cacheable (캐시 처리 기능)
  4. Layered System (계층 구조)
  5. Uniform Interface (인터페이스 일관성)
  6. Self-Descriptiveness (자체 표현)

📖 REST API

💬 정의

  • REST의 특징을 기반으로 서비스 API를 구현한 것

💬 디자인 가이드

  • URI는 정보의 자원을 표현해야 된다
    => 예시 : /user, /review 등
  • 자원에 대한 행위는 HTTP Method(GET, POST 등)로 표현한다
    => 행위는 URL에 포함하지 않는다

💬 설계 규칙

  1. URI는 명사를 사용할 것
    • 동사를 사용하지 말라는 얘기
      => 예시 : /getUsers, /createNewUser
  2. 슬래시( / )로 계층 관계를 표현할 것
    • 예시 : /review/comment
  3. URI 마지막 문자로 슬래시( / )를 포함하지 말 것
  4. 밑줄( _ )을 사용하지 말고 하이픈( - )을 사용할 것
  5. URI는 소문자로만 구성할 것
  6. HTTP 응답 상태 코드 사용할 것
    • 클라이언트는 해당 요청에 대한 실패 처리완료, 잘못된 요청 등에 대한 피드백 필요
    • 2xx은 성공 / 4xx은 클라이언트 실패 / 5xx은 서버 실패
  7. 파일확장자는 URI에 포함하지 않는다.
    • 예시 : http://test.com/review/img.jpg

❗ 그래서 REST API와 RESTful API의 차이는 뭔데?

  • RESTful API는 REST의 설계 규칙을 잘 지켜서 설계된 API

💡 답변

RESTful API란?

결론부터 말하면 REST의 설계 규칙을 잘 지켜서 설계된 API를 RESTful한 API라고
합니다. 설계 규칙에는 URI는 리소스를 표현해야 하며 명사를 사용하고,
슬래시로 계층 관계를 표현할 것, 소문자로만 구성할 것 등이 있고
자원에 대한 행위는 HTTP Method로 표현해야하며 HTTP 응답 코드로
클라이언트에게 피드백을 해줘야 한다는 것입니다.

GET, POST 방식의 차이점

HTTP Method에서 GET은 정보 요청을 의미하며 URI가 가진 정보를 요청할 때
사용합니다. 요청할 때 body에 data를 담을 수 없습니다.
POST의 경우에는 정보 입력을 의미하며 클라이언트가 서버로 정보를 전달하여
정보를 생성합니다. 그렇기에 요청할 때 body에 data를 담을 수 있습니다.

1개의 댓글

comment-user-thumbnail
2024년 3월 27일

url과 uri의 설명에서 약자 오타가 난 것 같아요

답글 달기