티스토리 뷰
REST(=RESTful) API(Representational State Transfer Application Programming Interface)
REST 구조의 제약 조건을 준수하는 API를 뜻함
웹의 장점을 최대한 활용할 수 있는 구조
REST 구성
자원(Resource) - URI
행위(Verb) - HTTP METHOD
표현(Representations)
REST 특징
1. Uniform Interface(통일된 방식) : URI로 지정된 리소스에 대한 조작을 통일된 방식으로 수행하는 구조
2. Stateless(무상태성) : API 서버는 들어오는 요청만 단순히 처리한다.
3. Cacheable(캐시 가능) : HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag나 E-Tag를 이용하여 캐싱 기능을 구현할 수 있다.
4. Self-descriptiveness(자체 표현 구조) : REST API 메세지만 보고도 쉽게 이해할 수 있어야 한다.
GET / HTTP/1.1
Host: www.example.org <!-- 목적지 표시 -->
HTTP/1.1 200 OK
Content-Type: application/json-patch+json <!-- 문서 형식 표시 -->
\[{ “op” : “remove”, “path” : “a/b/c"}\]
5. Client - Server 구조 : Server는 API 제공, Client는 사용자 인증이나 세션, 로그인 정보 등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.
6. 계층형 구조 : 다중 계층으로 구성될 수 있으며 보안, 로드밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.
REST API 디자인 규칙
1. URI는 정보의 자원을 표현해야 한다.
GET /members/delete/1 (X) //delete와 같은 행위에 대한 표현은 들어가서는 안된다.
DELETE /members/1 (O)
2. 자원에 대한 행위는 HTTP Method(PUT, POST, GET, DELETE)로 표현한다.
GET /members/insert/2 (X) //GET 메서드는 회원 추가에 사용하기에 맞지 않다.
POST /members/2 (O)
METHOD | 역할 |
POST | 리소스 생성 |
GET | 리소스 조회 |
PUT | 리소스 수정 |
DELETE | 리소스 삭제 |
참고
'Network' 카테고리의 다른 글
HTTP 상태 코드 (0) | 2021.03.13 |
---|---|
쿠키, 세션, 캐시 (0) | 2021.01.04 |