[CS] REST API와 RESTful

장다슬·2024년 4월 16일

CS 스터디

목록 보기
7/23

REST API

REST 원리를 기반으로 구현한 API를 의미

특징

  • 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있음
  • HTTP 표준을 기반으로 하므로, HTTP를 지원하는 프로그램 언어로 클라이언트 및 서버를 구현 가능
  • 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트 제작 가능

설계 규칙

1. URI는 정보의 자원을 표현

  • resource는 동사보다는 명사를, 대문자보다는 소문자를 사용
  • resource의 도큐먼트 이름으로는 단수 명사를 사용
  • resource의 컬렉션 및 스토어 이름으로는 복수 명사를 사용

2. 자원에 대한 행위는 HTTP Method (POST, GET, PUT, DELETE 등)로 표현

  • URI에 HTTP Method가 들어가선 안됨

    GET /members/delete/1 (X) => DELETE /members/1 (O)

  • URI에 행위에 대한 동사 표현이 들어가선 안됨

    💡 CRUD 예시
    POST /members/insert (X) => POST /members (O)
    GET /members/list (X) => GET /members (O)
    GET /members/detail/1 (X) => GET /members/1 (O)
    POST /members/update/1 (X) => PUT /members/1 (O)
    POST /members/delete/1 (X) => DELETE /members/1 (O)

  • 경로 중 변하는 부분은 유일한 값으로 대체 (id 값 등)

3. 슬래시 구분자(/)는 계층 관계를 나타내는데 사용

http://example.com/fruits/apples

4. URI 마지막에 슬래시(/)를 포함하지 않음

5. 언더바(_) 대신 하이픈(-) 사용

6. URI에는 소문자 및 명사를 사용

7. 파일 확장자를 포함하지 않음

  • REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다.
  • Accept header를 사용한다.

    나쁜 예 http://example.com/fruits/apple.jpg


RESTful

REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어로, REST API의 설계 규칙을 올바르게 지킨 웹 서비스를 RESTful 하다고 할 수 있다.

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것이 목적
  • 근본적인 목적은 성능 향상보다는 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것
    • 즉, 성능이 중요하다면 굳이 RESTful한 API를 구현할 필요는 없음
  • RESTful 하지 못한 경우
    • CRUD 기능을 모두 POST로만 처리하는 API
    • 경로에 resource, id 외의 정보가 들어가 있는 경우
      예) /members/updateName

참고:
[간단정리] REST, REST API, RESTful 특징 - 넌 잘하고 있어
[네트워크] REST API란? REST, RESTful이란?
REST API란 무엇인가? - Junvely 개발일기 - 티스토리

profile
반갑습니다

0개의 댓글