-
[Spring] Restful API란 ?Java/Spring boot 2022. 2. 22. 19:23728x90
Restful API란 ?
HTTP 통신에서 어떤 자원에 대한 CRUD(Create , Read , Update , Delete) 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식
즉 , Rest란 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI(Resource)로 요청을 보내는 것으로, Get/Post 등의 방식을 사용하여 요청을 보내며, 요청을 위한 자원은 특정한 형태로 표현된다.
그리고 이러한 Rest 기반의 API를 웹으로 구현한 것이 Restful API이다.
그렇다면 API는 무엇일까?
API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다.
Restful API의 구성요소
- Resource
서버는 unique한 ID를 가지는 Resource를 가지고 있으며, 클라이언트는 이러한 Resource에 요청을 보낸다. 이러한 Resource는 URI에 해당한다.
- Method
서버에 요청을 보내기 위한 방식으로 GET, POST, PUT, PATCH, DELETE 등이 있으며 , CRUD 연산 중에서 처리를 위한 연산에 맞는 Method를 사용하여 서버에 요청을 보내야 한다.
- Representation of Resource
클라이언트가 서버가 데이터를 주고 받는 형태로 JSON , XML 등이 있다. 최근에는 Key와 Value를 활용하는 JSON 방식을 주로 사용한다.
RESTful API의 조건
- 일관된 인터페이스(Uniform Interface)
Resource에 대한 요청을 통일되고, 한정적으로 수행하는 아키텍쳐 스타일을 의미한다. 이는 요청하는 클라이언트가 플랫폼에 무관하며, 특정 언어나 기술에 종속받지 않는 특징을 의미한다.
- 무상태성(Stateless)
서버는 각각의 요청을 별개의 것으로 인식하고 처리해야 하며, 이전 요청이 다음 요청에 연관되어서는 안된다. 이러한 무상태성 덕분에 Rest API는 서비스의 자유도가 높고 서버에서 불필요한 정보를 관리하지 않으므로 구현이 단순하다.
- 캐시 가능(Cacheable)
Rest API는 결국 HTTP라는 기존의 웹 표준을 그대로 사용하기 때문에, 웹의 기존 인프라를 그대로 활용할 수 있다.
그러므로, HTTP 프로토콜 표준에서 사용하는 Last-Modified Tag 또는 E-Tag를 이용하여 캐싱을 구현할 수 있고, 이것은 대량의 요청을 효율적으로 처리할 수 있게 도와준다.
- 클라이언트-서버 구조(Client-Server Architecture)
Rest API에서 자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트에 해당된다. 서버는 클라이언트에게 API를 제공하며, 클라이언트는 사용자 인증 등을 직접 관리하는 등 역할을 확실히 구분함으로써 서로 간의 의존성을 줄인다.
- 자체 표현(Self-Descriptiveness)
Rest API는 요청 메세지에서 이를 쉽게 이해할 수 있는 자체 표현 구조로 구성되어 있다.
Ex)
HTTP POST, http://localhost:8080/board
{
"board":{
"title":"제목:,
"content":"내용"
}
}
위와 같은 JSON 형태의 Rest 메세지는 제목 , 내용을 전달하고 있음을 손쉽게 이해할 수 있다.
- 계층 구조(Layered System)
Rest API의 서버는 다중 계층으로 구성될 수 있으며 보안 , 암호화 등을 위한 계층을 추가하여 구조를 변경할 수 있다.
REST의 규칙
1. URI는 명사를 사용2. 슬래시(/)로 계층 관계를 표현
3. URI의 마지막에는 슬래시를 붙이지 않음
4. URI는 소문자로만 구성
5. 가독성이 떨어지는 경우 하이픈을 사용
728x90'Java > Spring boot' 카테고리의 다른 글
[Spring Boot] Spring boot + GPT 3.5를 활용한 CS 챗봇 앱 (0) 2023.06.15 [Spring] 객체 지향 설계 5대 원칙 SOLID (0) 2022.02.22