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를 사용하는 방법의 차이
- 기본 JSON 처리:
- fetch: 응답을 JSON으로 변환하기 위해 추가적인 메서드 호출이 필요합니다 (예: response.json()).
- axios: JSON 변환은 자동으로 수행됩니다.
- 오류 처리:
- fetch: 오류 상태의 HTTP 응답 (예: 404 또는 500)은 기본적으로 거부되지 않습니다. 오류 처리를 위해 추가적인 로직이 필요합니다.
- axios: 오류 상태의 HTTP 응답은 자동으로 거부됩니다. 이는 catch 블록에서 쉽게 처리할 수 있습니다.
- 브라우저 지원:
- fetch: 더 새로운 브라우저에 기본적으로 내장되어 있습니다.
- axios: Promise 기반으로 동작하기 때문에 구형 브라우저에서도 사용할 수 있습니다 (올바른 폴리필이 있으면).
- Request and Response Interceptors:
- fetch: 내장된 interceptor 기능이 없습니다.
- axios: 요청과 응답을 가로채는 interceptor 기능을 제공하여, 공통 로직을 쉽게 추가할 수 있습니다.
'Study > Frontend' 카테고리의 다른 글
2024년에는 라이브러리를 위해 어떤 모듈 번들러를 선택해야 할까? (0) | 2024.04.12 |
---|---|
TDD 테스트 주도 개발 방법론 (1) | 2023.10.28 |
fork + template으로 프로젝트 초기설정 날로 먹기 (0) | 2023.10.20 |
Vue 3 + TS + AntDV 프로젝트 세팅하기 (0) | 2023.10.18 |
프론트엔드 과목 평가 준비 (0) | 2023.09.17 |