Study/Frontend

REST API

LireEruel 2023. 10. 27. 10:19

REST API

 

REST API는 Representational State Transfer의 약자로, 웹 서비스의 설계 패러다임 중 하나입니다.

  • 하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다.

  • 웹의 장점을 최대한 활용할 수 있는 아키텍처(설계구조)로써 REST를 발표
  • HTTP URI를 통해 제어할 자원(Resource)을 명시하고, HTTP Method(GET, POST, PUT, DELETE)을 통해 해당 자원을 제어하는 명령을 내리는 방식의 아키텍처

REST 구성

  • 자원 (Resource) : URI
  • 행위 (Verb) : HTTP Method
  • 표현 (Representations)

REST 특징

  • 자원 지향: 각 URL은 특정 자원을 나타냅니다.
  • 상태 없음: 각 요청은 독립적이며, 이전 요청의 상태를 알 필요가 없습니다.
  • 메소드: 표준 HTTP 메소드 (예: GET, POST, PUT, DELETE)를 사용하여 자원에 대한 CRUD 연산을 수행합니다.
  • 무상태성: 서버는 각 요청 사이의 클라이언트의 상태 정보를 저장하지 않습니다.
  • 이러한 원칙에 따라 구축된 API는 클라이언트와 서버 간의 통신을 위해 사용되며, 웹, 모바일, 서버 간 통신 등 다양한 애플리케이션에서 활용됩니다.

REST 설계 컨벤션

대표하는 한 단체에서 정한 표준은 없지만, 대중적으로 많이 사용하는 암묵적인 규칙이 있습니다.

  • 하이픈(-)은 사용 가능하지만, 언더바(_)는 사용하지 않는다.
  • 대소문자는 사용하지 않고, 소문자만 사용한다.
  • URI 마지막에 슬래시(/)를 사용하지 않는다.
  • 슬래시(/)로 계층 관계를 나타낸다.
  • 확장자가 포함된 파일 이름을 직접 포함시키지 않는다.
  • URI는 명사를 사용한다.

 

잠깐! URI와 URL의 차이 알고계신가요?


URI (Uniform Resource Identifier):자원을 식별하는 모든 문자열을 나타냅니다.이것은 자원의 이름 또는 주소 또는 둘 다를 포함할 수 있습니다.
URL (Uniform Resource Locator):자원의 특정 위치를 나타내고, 그 자원에 액세스하는 방법을 제공하는 URI의 하위 집합입니다.프로토콜 (예: https, ftp)과 경로 정보를 포함합니다.

차이점 요약: 모든 URL은 URI이지만, 모든 URI는 URL이 아닙니다. URL은 "어디에 위치해 있는지"와 "어떻게 접근해야 하는지"를 알려줍니다. 반면, URI는 단순히 자원을 식별하기만 합니다.




 

Fetch와 Axios를 사용하는 방법의 차이

  1. 기본 JSON 처리:
    • fetch: 응답을 JSON으로 변환하기 위해 추가적인 메서드 호출이 필요합니다 (예: response.json()).
    • axios: JSON 변환은 자동으로 수행됩니다.
  2. 오류 처리:
    • fetch: 오류 상태의 HTTP 응답 (예: 404 또는 500)은 기본적으로 거부되지 않습니다. 오류 처리를 위해 추가적인 로직이 필요합니다.
    • axios: 오류 상태의 HTTP 응답은 자동으로 거부됩니다. 이는 catch 블록에서 쉽게 처리할 수 있습니다.
  3. 브라우저 지원:
    • fetch: 더 새로운 브라우저에 기본적으로 내장되어 있습니다.
    • axios: Promise 기반으로 동작하기 때문에 구형 브라우저에서도 사용할 수 있습니다 (올바른 폴리필이 있으면).
  4. Request and Response Interceptors:
    • fetch: 내장된 interceptor 기능이 없습니다.
    • axios: 요청과 응답을 가로채는 interceptor 기능을 제공하여, 공통 로직을 쉽게 추가할 수 있습니다.