>  기사  >  웹 프론트엔드  >  REST API 및 아키텍처

REST API 및 아키텍처

PHPz
PHPz원래의
2024-09-08 20:33:07760검색

소개

오늘날의 웹 개발 세계에서 API(애플리케이션 프로그래밍 인터페이스)는 서로 다른 소프트웨어 시스템 간의 통신을 가능하게 하는 데 중요한 역할을 합니다. 가장 널리 사용되는 API 유형 중 하나는 Representational State Transfer의 약자인 REST API입니다. REST API는 확장 가능하고 유지 관리가 가능하며 효율적인 웹 서비스를 구축하기 위한 표준이 되었습니다. 이 블로그에서는 REST API가 무엇인지, 그 원리, 아키텍처, 구성 요소 및 이를 효과적으로 설계하고 구현하는 방법에 대해 자세히 알아봅니다.

REST API란 무엇인가요?
REST(Representational State Transfer)는 네트워크로 연결된 애플리케이션을 설계하기 위한 아키텍처 스타일입니다. 이는 상태 비저장 클라이언트-서버 통신 모델을 사용하며 표준 HTTP 방법을 기반으로 합니다. REST API를 사용하면 다양한 애플리케이션이 간단한 규칙 집합을 사용하여 인터넷을 통해 통신할 수 있습니다.

REST API and Its Architecture

REST API는 HTTP 요청을 보내고 HTTP 응답을 받아 클라이언트(예: 브라우저나 휴대폰과 같은 웹이나 모바일 애플리케이션)가 서버와 상호 작용할 수 있도록 하는 인터페이스입니다. 서버는 사용자 프로필부터 이미지 또는 블로그 게시물에 이르기까지 모든 리소스에 대한 액세스를 제공합니다.
REST의 주요 원칙
RESTful로 간주되려면 API에 다음과 같은 6가지 원칙이 있어야 합니다.

  1. 클라이언트-서버 아키텍처: 클라이언트와 서버는 서로 독립적이어야 합니다. 클라이언트는 사용자 인터페이스와 사용자 경험을 담당하고 서버는 백엔드 로직, 데이터 저장 및 처리를 처리합니다.
  2. 상태 비저장: 클라이언트에서 서버로의 각 요청에는 요청을 이해하고 처리하는 데 필요한 모든 정보가 포함되어야 합니다. 서버는 요청 사이에 클라이언트 정보를 저장하지 않습니다. 이를 통해 서버 설계가 가능해지고 확장성이 향상됩니다.
  3. 캐시 가능성: 서버의 응답은 캐시 가능 여부를 명확하게 정의해야 합니다. 응답을 캐시할 수 있는 경우 클라이언트는 향후 요청에 응답 데이터를 재사용하여 서버의 로드를 줄이고 성능을 향상시킬 수 있습니다.
  4. 균일한 인터페이스: REST API는 리소스와 상호 작용하는 일관되고 표준화된 방법을 제공해야 합니다. 이는 다음 네 가지 하위 원칙을 통해 달성됩니다.  - 리소스 식별: 리소스는 URI(Uniform Resource Identifier)를 사용하여 식별됩니다.  - 표현을 통한 리소스 조작: 클라이언트는 요청에서 표현(예: JSON, XML)을 전송하여 리소스와 상호 작용합니다.  - 자기 설명적 메시지: 각 요청과 응답에는 메시지 처리 방법을 설명하는 데 충분한 정보가 포함되어야 합니다.  - HATEOAS(엔진 오브 애플리케이션 상태로서의 하이퍼미디어): 클라이언트는 응답에 제공된 하이퍼링크를 사용하여 API를 동적으로 탐색해야 합니다.
  5. 계층형 시스템: 아키텍처는 클라이언트가 이러한 계층을 인식하지 않고도 캐싱, 로드 밸런싱, 보안 계층 ​​등 클라이언트와 서버 사이에 중간 계층을 사용할 수 있도록 허용해야 합니다.
  6. 주문형 코드(선택 사항): 서버는 클라이언트 측에서 실행될 JavaScript와 같은 실행 가능 코드를 전송하여 클라이언트 기능을 확장할 수 있습니다. 이는 REST의 선택적 제약 조건입니다.

REST API 아키텍처
REST API의 아키텍처는 클라이언트와 서버 간의 통신을 생성하기 위해 함께 작동하는 여러 주요 구성 요소로 구성됩니다.

  1. 리소스: 리소스는 REST API의 핵심 개념입니다. 이는 사용자, 제품, 주문 등과 같이 API가 액세스를 제공하는 데이터 또는 개체를 나타냅니다. 각 리소스는 고유한 URI로 식별됩니다.

  2. HTTP 방법: REST API는 표준 HTTP 방법을 사용하여 리소스에 대한 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행합니다.
     - GET: 리소스에서 데이터를 가져옵니다.
     - POST : 리소스(DB)에 새로운 데이터 변경사항을 생성합니다.
     - PUT: 데이터(DB)에 있는 기존 기록을 업데이트합니다.
     - DELETE: DB에서 특정 데이터를 삭제합니다.
     - 패치: 기존 데이터를 부분적으로 업데이트합니다.
     - OPTIONS: 리소스에 대해 지원되는 HTTP 메소드를 검색합니다.

  3. HTTP 상태 코드: REST API는 표준 HTTP 상태 코드를 사용하여 요청 결과를 나타냅니다. 일반적인 상태 코드는 다음과 같습니다.
     - 200 OK: 요청이 성공했습니다.
     - 201 Created: 새로운 리소스가 성공적으로 생성되었습니다.
     - 204 콘텐츠 없음: 요청이 성공했지만 반환할 콘텐츠가 없습니다.
     - 400 잘못된 요청: 요청의 형식이 잘못되었거나 유효하지 않습니다.
     - 401 권한 없음: 클라이언트가 리소스에 액세스하려면 인증해야 합니다.
     - 404 Not Found : 요청한 리소스를 찾을 수 없습니다.
     - 500 내부 서버 오류: 서버에 예상치 못한 오류가 발생했습니다.

  4. 표시 형식: REST API는 JSON(JavaScript Object Notation), XML(eXtensible Markup Language) 및 HTML을 포함하여 데이터 교환을 위한 다양한 표시 형식을 지원합니다. JSON은 단순성과 JavaScript와의 호환성으로 인해 가장 일반적으로 사용되는 형식입니다.

  5. 엔드포인트: 엔드포인트는 서버에서 특정 리소스에 액세스할 수 있는 위치를 정의하는 URL입니다. 각 엔드포인트는 특정 리소스에 해당하며 일반적으로 동사보다는 명사(예: /users, /products)를 사용하여 설계됩니다.

RESTful API 설계

RESTful API를 설계하려면 API가 REST 원칙을 준수하고 클라이언트에게 원활한 환경을 제공하는지 확인하기 위한 여러 단계가 필요합니다. REST API 설계에 대한 몇 가지 모범 사례는 다음과 같습니다.

  1. 엔드포인트에 명사 사용: 엔드포인트의 이름은 작업(동사)이 아닌 리소스(명사)의 이름을 따서 지정해야 합니다. 예를 들어 사용자 모음을 나타내려면 /getUsers 대신 /users를 사용하세요.

  2. HTTP 메소드를 적절하게 사용: 각 작업에 올바른 HTTP 메소드를 사용하십시오. 예를 들어 GET을 사용하여 데이터를 검색하고, POST를 사용하여 데이터를 생성하고, PUT을 사용하여 데이터를 업데이트하고, DELETE를 사용하여 데이터를 제거합니다.

  3. 필터링, 정렬 및 페이지 매김 구현: 리소스 목록을 반환하는 엔드포인트의 경우 필터링, 정렬 및 페이지 매김을 구현하여 성능을 향상하고 클라이언트에 더 많은 제어권을 제공합니다. 이를 달성하려면 ?sort=name, ?page=2 또는 ?limit=10과 같은 쿼리 매개변수를 사용하세요.

  4. API 버전 관리: 기존 클라이언트를 손상시키지 않고 변경 사항을 처리하려면 항상 API 버전을 지정하세요. URL(예: /api/v1/users) 또는 헤더에 버전 번호를 포함하세요.

  5. 의미 있는 HTTP 상태 코드 제공: 요청 결과를 나타내는 적절한 HTTP 상태 코드를 반환합니다. 모든 응답에 200 OK를 사용하지 마세요.

  6. 하이퍼미디어(HATEOAS) 사용: 클라이언트가 URL을 하드코딩하지 않고도 API를 동적으로 탐색할 수 있도록 응답에 링크를 포함합니다.

  7. 보안 보장: 전송 중인 데이터를 암호화하기 위해 HTTPS를 사용하여 API를 보호합니다. 인증(예: OAuth, JWT) 및 권한 부여를 구현하여 리소스에 대한 액세스를 제어합니다.

  8. 오류를 적절하게 처리: 클라이언트가 무엇이 잘못되었는지 이해할 수 있도록 의미 있는 오류 메시지와 HTTP 상태 코드를 제공합니다. 오류 코드, 메시지, 가능한 해결 방법 등의 세부정보를 포함하여 재사용 가능한 오류 형식을 만드세요.

REST API 설계 예시

도서 컬렉션 관리를 위한 간단한 REST API의 예를 살펴보겠습니다.

  1. 엔드포인트: /api/v1/books
  2. GET /api/v1/books: DB에서 모든 도서 목록을 가져옵니다.  - POST /api/v1/books: db에 새 책을 생성합니다.
  3. 엔드포인트: /api/v1/books/{id}
  4. GET /api/v1/books/{id}: 특정 도서를 ID로 반환합니다.  - PUT /api/v1/books/{id}: 특정 도서를 ID로 업데이트합니다.  - DELETE /api/v1/books/{id} : 특정 도서를 ID별로 삭제합니다.
  5. 오류 처리 예:
  6. 고객이 존재하지 않는 도서를 요청하는 경우:   - 응답: 404 찾을 수 없음   - 바디 : 바디는 이런 모습입니다

REST API and Its Architecture

REST API 구현

REST API를 구현하려면 다양한 프로그래밍 언어와 프레임워크를 사용할 수 있습니다. 다음은 Express.js와 함께 Node.js를 사용하는 예입니다.

REST API and Its Architecture

위 내용은 REST API 및 아키텍처의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.