저에겐 API라는게 개발 공부를 하면서 많이 사용하고, 들어본 것이지만 설명해보라 한다면 어떻게 설명해야 될지 잘 모르겠는 그런 개념 입니다.
그래서 이번에는 API가 무엇인지 정확하게 알고, RESTful API에 대해서 알아보도록 합시다!
🤔API란 무엇일까?
- API는 정의 및 프로토콜 집합을 사용하여, 두 소프트웨어 구성 요소가 통신할 수 있게 하는 메커니즘 입니다.
- Application Programming Interface의 줄임말 입니다. 이는 고유한 기능을 가진 소프트웨어(Application)사이의 상호 서비스 계약(Interface)라고 할 수 있습니다.
🤔REST API?
- 오늘날 웹에서 가장 많이 사용되고 유연한 API
- REST (Representational State Transfer) 는 클라이언트가 서버 데이터에 엑세스 하는데 사용할 수 있는 GET, PUT, DELETE등의 함수 집합을 정의합니다.
- 클라이언트와 서버는 HTTP를 사용하여 데이터를 교환합니다.
😀REST API의 구성요소
- 자원 (Resources) : 모든 것을 고유한 식별자인 URI로 표현합니다.
- 행위 (Methods) : HTTP 메서드를 사용하여 해당 자원에 대한 행동을 표현합니다. (GET, POST, PUT, DELETE) 등이 있습니다.
- 표현 (Respresentations) : 일반적으로 JSON, XML등의 데이터 형식을 사용합니다.
😀Rest API의 특징
- 무상태 (Stateless) : 서버는 각 요청을 독립적으로 처리하며 클라이언트의 상태를 저장하지 않습니다. 모든 필요한 정보는 요청 자체에 포함되어야 합니다.
- 클라이언트-서버 구조 : 클라이언트와 서버간의 명확한 역할 분리를 지향합니다.
- 캐시 가능성 : HTTP의 표준 기능을 이용하여 클라이언트 서버의 응답을 캐시할 수 있습니다.
- 계층 구조 : 서버는 다른 서버에게 요청을 전달하거나 데이터베이스 등의 다른 서비스를 이용할 수 있습니다. 이를 통해 시스템의 구조를 단순화하고, 재사용성과 유지보수성이 향상됩니다.
- HATEOAS (Hypermedia as the Engine of Application State) : REST의 가장 중요한 원칙으로 서버가 클라이언트에게 리소스 관련 링크를 제공함으로써 클라이언트가 서버와 동적인 상호작용이 가능하도록 하는 것입니다.
{
"routes" : [
"label": "홈",
"href": "<http://localhost:8080>",
},
{
"label": "지도",
"href": "<http://localhost:8080/map>",
},
{
"label": "내 프로필",
"href": "<http://localhost:8080/profile>",
},
]
}
HATEOAS가 적용된 응답 예
🤔그렇다면 RESTful API가 무엇일까?
RESTful API는 REST API와 종종 혼용되어 사용되지만, 차이가 있다면 RESTful API는 엄격하게 REST API의 원칙을 따르며 HATEOAS를 적용하여 클라이언트와 서버간의 상호작용을 보다 유연하고 효과적으로 가능하게 만들어 준 것이고, 반면 REST API는 REST 원칙을 일부 따르지만 완전히 준수하지 않을 수 있습니다.
😉결론!
RESTful API는 REST의 원칙을 엄격하게 따른 REST API라는 것이다! 혼용하여 사용될 정도로 큰 차이가 없다는 것!
출처
API란 무엇인가요? - 애플리케이션 프로그래밍 인터페이스 설명 - AWS
RESTful API란 무엇인가요? - RESTful API 설명 - AWS
'개발 상식' 카테고리의 다른 글
[개발 상식] 클린코드란? (0) | 2023.07.25 |
---|---|
[개발 상식] 객체지향(OOP) vs 절차지향(PP) (0) | 2023.07.22 |
[개발 상식] TDD란 무엇인가? (0) | 2023.07.21 |
[개발 상식] 함수형 프로그래밍이란? (0) | 2023.07.21 |
[개발 상식] MVC 패턴이란 무엇인가? (0) | 2023.07.21 |