spring boot로 웹 개발을 해보면서 rest api 개념을 공부하면서 정리해봤습니다.
API
- API ( Application Programming Interface )는 응용프로그램이나 서비스를 개발하는데 필요한 운영체제(OS)나 라이브러리 등의 특정 기능을 추상화하여 사용하기 쉽도록 만든 인터페이스
- 데이터와 기능의 집합을 제공하는 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 함
API 종류
- private API
내부 API로, 외부에 노출되지 않는다. 자체 제품과 서비스를 개선하기 위해 내부적으로 사용하는 것이 일반적이다. private API로 발행하고 중간에 gateway를 두고 사용하는 경우도 있음
- public API
public API는 개방형 API로, 모두에게 공개되는 API 형태
- partner API
partner API는 인가된 사용자에 한하여 공유되는 API로 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용
REST
정의
- REST ( Repressentational State Transfer )는 해당 자원의 정보를 주고 받는 모든 것을 의미
- 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일
- 강점 : 메소드와 URL을 조합해서 예측 가능하고 일정한 정보와 작업을 요청
Rest 구성 요소
-
자원 ( Resource ) - URI
-
행위 ( Verb) - HTTP Method
HTTP Method | 설명 |
---|
POST | CREATE 작업에 대한 Method로 서버에 데이터를 추가할 때 사용 |
GET | READ 작업에 대한 Method로 서버에 데이터를 읽어올 때 사용 |
PUT | UPDATE 작업에 대한 Method로 서버 데이터를 갱신할 때 사용 (데이터가 전체일 때) |
PATCH | UPDATE 작업에 대한 Method로 서버 데이터를 갱신할 때 사용 (데이터가 일부일 때) |
DELETE | DELETE 작업에 대한 Method로 서버 데이터를 삭제할 때 사용 |
-
표현 ( Representation of Resource )
REST 장단점
- 장점
- HTTP 인프라 베이스라 REST API를 위한 인프라를 구축할 필요가 없음.
- HTTP 표준을 따르기 때문에 여러 추가적인 기능을 사용할 수 있음.
- HTTP를 지원하는 모든 플랫폼에서 사용이 가능함.
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장.
- REST API URI가 의도하는 바를 명확하게 나타내므로 기능을 쉽게 파악 가능.
- 기능 통합으로 여러 서비스를 통합할 때 생기는 디자인 문제를 최소화.
- 서버와 클라이언트의 역할을 명확하게 분리.
- 단점
- 표준 자체가 존재하지 않아 정의가 필요.
- HTTP Method 형태가 제한적. (GET, POST, PUT, PATCH, DELETE)
- 테스트에 있어 전문성을 요구. (Header, dataType 등 HTTP 부가정보 설정)
- 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많음.
REST API
정의
- REST 원칙을 기반으로 구현된 API를 말하며 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 형태
참고 : https://velog.io/@carrotsman91/REST-API