restful API 얘기는 많이 들어 봤을 것이다.
기본 API에 Restful 개념을 합치거라 생각한다.
일단 API먼저 보자면
API란
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.
예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있습니다.
휴대폰의 날씨 앱은 API를 통해 이 시스템과 ‘대화’하여 휴대폰에 매일 최신 날씨 정보를 표시합니다.
REST 란
Representational State Transfer 의 약자로 아래의 구성을 갖는다
자원( RESOURCE ) - URI
행위( Verb ) - HTTP METHOD
표현( Representations )
REST 특징
1) Uniform Interface( 인터페이스 일관성 )
- URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에 사용가능
2) Stateless ( 무상태성 )
- HTTP 프로토콜은 Stateless Protocol 이므로 REST역시 무상태성을 갖음.
- Client의 centext를 Server에 저장하지않는다.
- Server는 각각의 요청을 완전히 별개의 것으로 인식하라고 처리한다.
3) Cacheable ( 캐시 처리 가능 )
- 웹 표준 HTTP프로토콜을 그대로 사용하므로 웹에서 사용하는 기존의 인프라를 그대로 활용 가능
- 대량의 요청을 효율적으로 처리하기 위해 캐시 요구
- 캐시 사용을 통해 응답시간이 빨라지고 REST Server 트랜잭션이 발생하지 않기 때문에 전체
응답시간, 성능, 서버의 자원 이용률을 향상 가능
4) Layerd System ( 계층화 )
- Client는 REST API Server만 호출.
- REST Server 는 다중 계층으로 구성될 수 있다.
- PROXY, 게이트웨이 같은 네트워크 기반의 중간 매체를 사용 가능
5) Code-On-Demand ( optional )
- Server로 부터 스크립트를 받아서 Client에서 실행한다.
- 반드시 충족할 필요는 없다.
6) Server-Client ( 서버-클라이언트 구조)
- 자원이 있는 쪽이 Server , 자원을 요청하는 쪽이 Client가 된다.
- 서로 간 의존성이 줄어든다.
REST API 설계 기본 규칙
참고 리소스 원형
- 도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념
- 컬렉션 : 서버에서 관리하는 디렉토리라는 리소스
- 스토어 : 클라이언트에서 관리하는 리소스 저장소
1. URI 는 정보의 자원을 표현해야 한다.
- 명사, 소문자 사용
- 도큐먼트 이름으로는 단수 명사 사용
- 컬렉션 이름으로는 복수 명사
- 스토어 이름으로는 복수 명사
ex) GET /Member/1(x) -> GET /members/1 (0)
2. 자원에 대한 행위는 HTTP Method( Get, Post, Put, Patch, Delete ) 로 표현
- URI 에 HTTP Method (x)
ex) GET /members/insert/1 -> POST /members/1
- URI 에 행위에 대한 동사 표현이 들어가면 안된다.
ex) GET /members/show/1 -> GET /members/1
GET /members/insert/2 -> POST /members/2
- 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
REST API 설계 규칙
1. 슬래시 구분자(/ ) 는 계층 관계를 나타내는데 사용
2. URI 마지막 문자로 슬래시(/) 를 포함하지 않는다.
- URI 에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용
URI 가 다르다는 것은 리소스가 다르다는 것이고, 역으로 리소스가 다르면 URI도 달라야 함
3. 하이픈(-) 은 URI 가독성을 높이는데 사용
- 불가피하게 긴 URI경로를 사용하게 된다면 하이픈을 사용해 가독성을 높인다.
4. 언더바는 URI에 사용하지 않는다. 가독성 저해
5. URI 경로에는 소문자가 적합
6. URI 에 파일 확장자를 포함하지 않는다.
#참고
https://www.redhat.com/en/topics/api/what-is-a-rest-api
What is a REST API?
A REST API (also known as RESTful API) is an application programming interface that conforms to the constraints of REST architecture. REST stands for representational state transfer.
www.redhat.com
https://aws.amazon.com/ko/what-is/api
API란 무엇인가요? - 애플리케이션 프로그래밍 인터페이스 설명 - AWS
GraphQL은 API용으로 특별히 개발된 쿼리 언어로서, 클라이언트에게 요청한 데이터만 제공하는 것을 우선으로 합니다. 또한 API를 빠르고 유연하며 개발자 친화적으로 만들도록 설계되었습니다. RES
aws.amazon.com
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
'IT 공부 > CS ( compute system)' 카테고리의 다른 글
함수형 프로그래밍 (0) | 2023.05.02 |
---|
댓글