REST API Model
사진출처: cchloe2311.log
REST(Representational State Transfer)
: 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스
리소스를 다룰때 인터페이스에서 정의한 방식으로만 다룰 수 있다는 의미이다.
API(Application Programming Interface)
: 애플리케이션 소프트웨어를 구축하고 통합하는 정의 및 프로토콜 세트
사용자와 클라이언트가 얻으려 하는 리소스 사이의 조정자라고 할 수 있다.
클라이언트의 시스템과 상호작용하여 정보를 검색하거나 기능을 수행하고자 할 때, API를 통해 요청사항을 전달 함으로써 시스템이 요청을 이해하고 응답할 수 있다.
HTTP의 주요 저자중 한명인 로이 필딩(Roy Fielding)은 많은 사람들이 웹 설계의 우수성을 이해하지 못한채 사용하고 있던게 아쉬워 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST라는 개념을 제안하였다.
REST는 프로토콜이나 표준이 아닌 아키텍처 원칙!
URI
로 지정한 리소스를 인터페이스를 통해서만 조작하는 아키텍처 스타일을 사용한다state(상태)
를 저장하지 않는다. 상태를 저장하지 않으므로 서버에게 주는 부담을 줄일 수 있다.HTTP
라는 웹 표준을 쓰기 때문에 웹에서 지원하는 캐싱 기능을 사용할 수 있다.다음 규칙들을 따르는 API
를 RESTful API
라고 한다
: 리소스 '자체'와 리소스에 대한 '행위'를 분리하여 설계해야 한다
URI
는 정보의 리소스(자원)를 표현하는데 사용해야 한다GET /Users/1 (O)
-> 리소스이름은 주로 명사
를 사용한다
GET /Users/update/1 (X)
-> URI
는 리소스 자체 위주로 표기해야한다. 리소스에 대한 행위 를 표현하면 안된다!
/
는 계층 관계를 나타내는데 만 사용한다URI
의 마지막에는 /
를 사용하지 않는다.리소스명
의 가독성을 높이기 위해 -
을 사용할 수 있다_
는 사용하지 않는다)URI
에 대문자
사용은 지양한다.Collection
, Document
개념의 리소스 사용시 단/복수를 구분하여 사용한다ex)
collection(document의 집합): books
document: history
GET : https://this.is.rest-api.com/library/books/history/1
번호 | 힌트 | 내용 |
---|---|---|
1xx | 정보 | 요청을 받았으며 프로세스를 게속 진행한다 |
2xx | 성공 | 요청을 성공적으로 받았으며 인식했고 수용했다 |
3xx | 리다이렉션 | 요청 완료를 위해 추가 작업 조치가 필요하다 |
4xx | 클라이언트 오류 | 요청의 문법이 잘못되었거나 요청을 처리할 수 없다 |
5xx | 서버 오류 | 서버가 유효한 요청에 대한 충족을 실패했다 |
자세한 상태 코드 내용은 MDN: 상태 코드에서 확인할 수 있다.
출처: https://nsinc.tistory.com/192 [NakedStrength]
레드햇: REST API란?
NHN Cloud: REST API 제대로 알고 사용하기
MDN: HTTP 요청 메서드
HTTP 상태 코드 정리