yongfront 2024. 2. 21. 16:20
반응형
SMALL

REST API(Representational State Transfer Application Programming Interface)는 웹 상에서 다양한 자원(데이터 또는 기능)을 HTTP 프로토콜을 통해 조작하기 위한 아키텍처 스타일입니다. REST는 분산 시스템 설계를 위한 원칙과 제약 조건의 집합으로, 인터넷에서 데이터를 주고받는 표준적인 방법을 제공합니다.

REST의 핵심 원칙

  1. Client-Server Architecture: 클라이언트와 서버는 서로 독립적으로 분리되어 있어야 합니다. 이는 각 부분의 확장성을 향상시킵니다.
  2. Stateless: 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다. 모든 필요한 정보는 각 요청에 포함되어야 합니다.
  3. Cacheable: 클라이언트는 응답을 캐싱할 수 있어야 하며, 캐싱을 통해 애플리케이션의 성능과 확장성을 향상시킬 수 있습니다.
  4. Uniform Interface: 일관된 인터페이스를 통해 서버와 클라이언트가 정보를 교환합니다. 이 원칙은 REST API의 가장 중요한 특징 중 하나입니다.
  5. Layered System: 클라이언트는 실제로 연결된 서버가 최종 서버인지 중간 서버인지 알 수 없는 계층화된 시스템 내에서 작동할 수 있습니다.
  6. Code on Demand (Optional): 서버는 실행 가능한 코드를 클라이언트에 전송할 수 있습니다. 이는 선택적인 원칙입니다.

REST API 디자인 가이드

  • 자원(Resource)의 식별: URI(Uniform Resource Identifier)를 사용하여 자원을 식별합니다. 예를 들어, 사용자 정보에 접근하는 URI는 /users가 될 수 있습니다.
  • 표현을 통한 자원의 조작: 클라이언트는 자원의 상태를 JSON, XML 등의 형태로 전송받아 해당 자원을 조작할 수 있습니다.
  • 메시지를 통한 자원의 조작: HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 자원에 대한 CRUD(Create, Read, Update, Delete) 연산을 수행합니다.
    • GET: 자원을 조회합니다.
    • POST: 자원을 생성합니다.
    • PUT: 자원을 업데이트합니다.
    • DELETE: 자원을 삭제합니다.

REST API 사용 예

예를 들어, 사용자 정보를 관리하는 REST API가 있다고 가정해봅시다.

  • 사용자 목록 조회: GET /users
  • 특정 사용자 조회: GET /users/{id}
  • 사용자 생성: POST /users
  • 사용자 정보 업데이트: PUT /users/{id}
  • 사용자 삭제: DELETE /users/{id}

REST API는 웹 서비스를 구축하기 위한 강력하고 유연한 방법을 제공하며, 웹, 모바일, IoT 등 다양한 플랫폼에서 널리 사용됩니다.

 

아래는 REST API를 사용하여 간단한 사용자 정보를 관리하는 예시입니다. 이 예시에서는 **fetch API**를 사용하여 REST API 요청을 보내고 응답을 처리하는 방법을 보여줍니다. **fetch API**는 현대 브라우저에서 지원하는 네이티브 API로, 네트워크 요청을 보내기 위해 사용됩니다.

사용자 목록 조회 (GET 요청)

fetch('<https://api.example.com/users>')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

특정 사용자 조회 (GET 요청)

fetch('<https://api.example.com/users/1>')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

사용자 생성 (POST 요청)

fetch('<https://api.example.com/users>', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'John Doe',
    email: 'john@example.com'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

사용자 정보 업데이트 (PUT 요청)

fetch('<https://api.example.com/users/1>', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Jane Doe',
    email: 'jane@example.com'
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

사용자 삭제 (DELETE 요청)

fetch('<https://api.example.com/users/1>', {
  method: 'DELETE'
})
.then(() => console.log('User deleted'))
.catch(error => console.error('Error:', error));

주의사항

  • 실제 API를 사용하기 전에 해당 API의 문서를 참조하여, 올바른 엔드포인트와 필요한 HTTP 메서드, 헤더, 바디 포맷 등을 확인해야 합니다.
  • 보안상의 이유로, 실제 애플리케이션에서는 사용자 인증과 권한 부여를 위한 추가적인 메커니즘이 필요할 수 있습니다 (예: OAuth, API 키).
  • **fetch**는 프로미스 기반 API이므로, async/await 구문을 사용하여 비동기 요청을 더 간결하고 읽기 쉽게 만들 수 있습니다.

이 예시는 REST API를 사용하여 웹 애플리케이션에서 서버와 데이터를 교환하는 기본적인 방법을 보여줍니다. REST API는 웹 개발에서 데이터를 CRUD하는 표준적인 방법으로, 다양한 웹 서비스와 애플리케이션에서 널리 사용됩니다.

 
 
728x90
반응형
LIST