본문 바로가기

For DEVELOPER

REST API :: API

728x90
반응형

REST API에 대한 소개

REST API란?

REST API는 Representational State Transfer(REST) 아키텍처 스타일을 기반으로 설계된 Application Programming Interface(API)입니다. REST는 웹의 창시자 중 한 명인 Roy Fielding이 제안한 개념으로, HTTP 프로토콜을 활용하여 자원(Resource)을 관리하고 통신하는 방식입니다. REST API는 클라이언트와 서버 간의 상호작용을 단순화하고 표준화된 방식으로 처리합니다[1][2].


REST의 주요 개념

1. 자원(Resource)

  • URI(Uniform Resource Identifier)를 통해 자원을 식별합니다.
  • 예: /users, /posts/1

2. 행위(HTTP Method)

HTTP 메소드를 사용하여 자원에 대한 작업을 정의합니다:

  • GET: 자원 조회
  • POST: 자원 생성
  • PUT: 자원 수정
  • DELETE: 자원 삭제

3. 표현(Representation)

자원의 상태를 JSON, XML과 같은 형식으로 표현하여 클라이언트와 서버 간에 전달합니다.


REST의 특징

  • 클라이언트-서버 구조: 클라이언트와 서버가 독립적으로 동작하며 역할이 명확히 분리됩니다.
  • 무상태성(Stateless): 서버는 클라이언트의 상태를 저장하지 않으며, 각 요청은 독립적으로 처리됩니다.
  • 캐시 가능(Cacheable): HTTP 캐시 기능을 활용하여 성능을 최적화할 수 있습니다.
  • 계층화(Layered System): 시스템은 계층적으로 설계되어야 하며, 중간 계층이 추가되어도 클라이언트와 서버 간의 상호작용에 영향을 미치지 않습니다.
  • 인터페이스 일관성(Uniform Interface): 표준화된 인터페이스를 사용하여 모든 요청과 응답을 처리합니다[1][4][6].

REST API 설계 원칙

RESTful API를 설계할 때 다음 규칙을 준수해야 합니다:

  1. URI는 명사로 표현:
    • Bad Example: /create-user
    • Good Example: /users
  2. 소문자 사용 및 하이픈(-) 활용:
    • Bad Example: /Test_Blog
    • Good Example: /test-blog
  3. 파일 확장자 제거:
    • Bad Example: /photo.jpg
    • Good Example: /photo
  4. 행위는 HTTP 메소드로 표현:
    • Bad Example: /delete-post/1
    • Good Example: /posts/1 (DELETE 메소드 사용)
  5. 슬래시(/)로 계층 구조 표현, 마지막에 슬래시 생략:
    • Bad Example: /users/
    • Good Example: /users[1][2][5].

REST API의 장단점

장점

  • HTTP 프로토콜을 사용하므로 별도의 인프라가 필요 없습니다.
  • 다양한 플랫폼에서 호환 가능하며 기술 독립적입니다.
  • 요청 자체로 의도를 명확히 파악할 수 있는 가독성이 높습니다.
  • 클라이언트와 서버가 분리되어 확장성과 유지보수성이 뛰어납니다[4][7].

단점

  • 표준이 없기 때문에 설계 가이드라인이 필요합니다.
  • HTTP 메소드가 제한적이라 복잡한 작업 구현 시 어려움이 있을 수 있습니다.
  • 바이너리 데이터 처리에 비효율적일 수 있습니다[6][10].

RESTful API 예제

다음은 사용자 관리 시스템에서 RESTful API를 설계한 예제입니다:

HTTP Method URI 설명
GET /users 사용자 목록 조회
POST /users 새로운 사용자 생성
GET /users/{id} 특정 사용자 조회
PUT /users/{id} 사용자 정보 수정
DELETE /users/{id} 사용자 삭제

결론

REST API는 간단하고 직관적인 방식으로 클라이언트와 서버 간의 통신을 가능하게 합니다. 이를 통해 개발자는 확장성과 유지보수성이 뛰어난 웹 애플리케이션을 구축할 수 있습니다. RESTful 설계를 준수하면 효율적이고 이해하기 쉬운 API를 제공할 수 있습니다.

반응형