본문 바로가기
개발 지식/정리

REST API란? (REST, RESTFUL)

by 꾸준함 2023. 3. 12.

REST API

REST(Representational State Transfer) API는 HTTP 프로토콜을 이용하여 클라이언트와 서버 간의 통신을 할 수 있는 API 디자인 패턴 중 하나입니다.


REST API의 핵심은 자원을 URI(Uniform Resource Identifier)로 표현하는 것입니다. URI는 해당 자원을 찾을 수 있는 주소를 나타냅니다. 클라이언트는 URI를 이용하여 서버에 자원을 요청하고, 서버는 URI에 따라 해당 자원을 반환합니다. 또한, REST API에서는 HTTP Method를 이용하여 자원에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다.

REST API는 다음과 같은 특징을 갖습니다.

  1. 자원(Resource) : 모든 자원은 고유한 ID를 가지고 있으며, 클라이언트는 해당 자원의 ID를 이용하여 서버에 요청합니다.
  2. 행위(Verb) : 클라이언트는 HTTP Method(GET, POST, PUT, DELETE 등)를 이용하여 자원에 대한 행위를 요청합니다.
  3. 표현(Representation) : 서버는 클라이언트에게 요청된 자원을 적절한 형식으로 응답합니다. 예를 들어 JSON, XML 등의 형식으로 응답할 수 있습니다.

REST API설계의 예시

  1. URI는 동사보다는 명사를, 대문자보다 소문자를 사용합니다.
    1. ⭕ - http://example.com/run
    2. ❌ - http://example.com/Running
  2. 언더바(_) 대신 하이픈(-)을 사용한다.
    1. ⭕ - http://example.com/test-comments
    2. ❌ - http://example.com/test_comments
  3. 마지막에 슬래시(/) 를 포함하지 않는다.
    1. ⭕ - http://example.com/test
    2. ❌ - http://example.com/test/
  4. 파일의 확장자는 포함하지 않는다.
    1. ⭕ - http://example.com/test
    2. ❌ - http://example.com/test.jpg
  5. 행위를 포함하지 않는다.
    1. ⭕ - http://example.com/users/1
    2. ❌ - http://example.com/users/post/1

예를 들어, 사용자 정보를 다루는 REST API를 설계한다고 가정하겠습니다. 사용자 정보는 고유한 ID를 가지고 있으며, 이름, 이메일 등의 속성을 갖습니다. 이 경우, 사용자 정보를 다루는 URI는 다음과 같을 수 있습니다.

  • GET /users : 모든 사용자 정보를 가져오는 요청
  • GET /users/{id} : 특정 ID를 가진 사용자 정보를 가져오는 요청
  • POST /users : 새로운 사용자 정보를 생성하는 요청
  • PUT /users/{id} : 특정 ID를 가진 사용자 정보를 수정하는 요청
  • DELETE /users/{id} : 특정 ID를 가진 사용자 정보를 삭제하는 요청

위와 같은 URI를 이용하여 클라이언트와 서버 간의 통신을 수행하는 것이 REST API의 기본 개념입니다.


🔗RESTFUL

RESTFUL이란 REST의 원리를 따르는 시스템을 의미합니다. 하지만 REST를 사용했다 하여 모두가 RESTful 한 것은 아닙니다.  REST API의 설계 규칙을 올바르게 지킨 시스템을 RESTful하다 말할 수 있으며

모든 CRUD 기능을 POST로 처리 하는 API 혹은 URI 규칙을 올바르게 지키지 않은 API는 REST API의 설계 규칙을 올바르게 지키지 못한 시스템은 REST API를 사용하였지만 RESTful 하지 못한 시스템이라고 할 수 있습니다.

'개발 지식 > 정리' 카테고리의 다른 글

AWS EC2 배포 이슈사항(mysql, jar파일 빌드)  (0) 2023.04.01
Swagger 기본 사용법  (0) 2023.03.20
Redis (레디스)  (0) 2023.03.18
JWT (Json Web Token)  (0) 2023.03.11
최대공약수(GCD) 와 최소공배수 (LCM)  (0) 2023.01.02