1. 식당으로 알아보는 API
식당에 갔다고 가정해보자 보통 식당에 가면 점원에게 요리를 주문한다. 그리고 점원은 주방에 가서 요리를 만들어 달라고 요청한다. 그리고 요리가 완성되면 다시 점원이 손님에게 요리를 전달한다.
여기서 손님은 클라이언트, 점원은 api, 주방에서 일하는 요리사는 서버라고 생각하면된다. 클라이언트가 요청하면 api가 서버에 요청을 전달하고 요청에 대한 처리가 완료되면 api는 클라이언트에게 요청에 대한 처리를 다시 전달해준다
2. REST API
웹의 장점을 최대한 활용하는 api
2-1. 어원
Representational State Transfer
=> 자원을 이름으로 구분해 자원의 상태를 주고받는 API, 즉 명확하고 이해하기 쉬운 api 라고 생각하면 된다.
2-2. 특징
- 서버/클라이언트 구조
- 무상태
- 캐시 처리 가능
- 계층화
- 인터페이스 일관성
- 등등..
이 부분에 대한 설명은 계속 추가 예정
무상태
시스템이나 프로그램이 이전에 수행된 상태를 기억하지 않는다. 즉 각 작업이 독립적으로 수행되고 이전의 상호작용이나 데이터는 다음 작업에 영향을 미치지 않는다.
예를 들어 HTTP는 무상태 프로토콜로써 서버는 클라이언트의 요청 사이에 어떠한 데이터도 유지하지 않는다. 즉 서버는 추가 정보 없이 각 요청을 완전히 독립적으로 처리한다.
장점은 간단성과 확장성이다. 상태정보를 유지할 필요가 없어서 각 요청은 다른 요청과 독립적으로 처리될 수 있고 이는 시스템을 확장하기 위해 더 많은 서비스를 추가하는것을 간단하게 할 수 있다. 만약 상태정보의 유지가 필요하다면 쿠키나 세션을 사용한다
단점은 때로는 효율성이 떨어질 수 있다. 사용자 인증 정보가 필요한 모든 요청마다 사용자를 다시 인증해야하는 경우가 그렇다.
예시
1. 로그인
로그인을 했을 경우에 서버는 이 정보를 확인하고 로그인 성공 여부를 클라이언트에게 알려준다. 이 과정에서 HTTP 프로토콜 자체는 사용자가 로그인 했다는 정보를 다음 요청까지 유지하지 않는다. 즉 서버는 다음 요청이 동일한 사용자로부터 왔는지 알지 못한다
2. 쇼핑몰
사용자가 장바구니에 상품을 담을 때 마다 HTTP 요청이 발생하지만 무상태 프로토콜인 HTTP는 이것을 기억하지 못한다.
하지만 쿠키나 세션에 각 요청에 대한 사용자의 장바구니 정보를 확인하고 상품을 추가하거나 제거하는 등의 상태를 유지할 수 있다.
2-3. 장점과 단점
장점
- URL만 보고도 무슨 행동을 하는 API인지 명확하게 알 수 있다.
- 상태가 없어서 클라이언트와 서버의 역할이 명확하게 분리됨
- HTTP 표준을 사용하는 모든 플랫폼에서 사용 가능
단점
- HTTP 메서드 개수에 제한이 있음
- 표준 규약이 없음
하지만 REST API는 주소와 메서드만 보고 요청의 내용을 파악할 수 있다는 강력한 장점이 있어서 많은 개발자가 사용하고
REST하게 디자인한 API를 RESTful API라고 부른다
2-4. 사용법
1. URL 에는 동사를 쓰지 않고 자원을 표시할 것
- /articles/1 (O) : 동사 없음, 1번글을 가져온다는 의미가 명확
- /articles/show/1 (X) : show라는 동사가 들어갔음
2. 동사는 HTTP 메서드로
- GET/articles/1 : 조회
- POST/articles : 추가
- PUT/articles/1 : 수정
- DELETE/articles/1 : 삭제
'IT 연구소' 카테고리의 다른 글
웹 애플리케이션의 이해 (1) | 2024.01.30 |
---|---|
자주 사용하는 쿼리 메서드의 명명 규칙 (0) | 2024.01.10 |
HTTP (1) | 2023.12.21 |
스프링 부트 gradle-groovy 프로젝트 생성하는 법! (0) | 2023.09.28 |
SOLID 법칙과 스프링 (0) | 2023.09.28 |