| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- llm연동
- CRUD
- 브랜치관리전략
- 깃플로우
- rest api
- selenium
- mcp
- Nan
- CI/CD
- 모던 자바스크립트
- 네이버 크롤링
- restful
- 스프링부트
- mcpserver
- modelcontextprotocol
- 개발자튜토리얼
- springboot 크롤링
- 깃허브
- SQLD
- spring
- github
- 회원관리
- springframework
- 자바스크립트기초
- gitflow
- Github action
- 백엔드개발
- SpringBoot
- springboot크롤링
- 자바스크립트
- Today
- Total
JUNEee
[Spring Boot] REST Api 란 무엇일까? 본문

[REST Api 개념]
- Api 란?
Application Programming Interface 의 약자로 컴퓨터나 컴퓨터 프로그램이 서로 소통할 수 있도록 제공하는 인터페이스이다.
웹 환경에서의 api는 서버가 제공하는 기능들을(자원의 조회 등..) URI 의 형태로 클라이언트에게 제공하게 된다.
- REST 란?
Representational State Transfer 의 약자로 HTTP 프로토콜을 이용한 웹 서비스 설계에서 주로 사용하는 설계 원칙이다.
자원을 이름으로 구분하여 자원의 상태를 주고받는 모든 것들을 의미하며 네트워크 상에서 클라이언트와 서버 사이의 통신 규칙 이라 이해하면 될 것이다.
- REST Api 란?
REST Api 는 REST의 설계원칙이 적용된 Api 를 의미하며 URI 로 자원의 형태를 표현하기 때문에 표현 규칙 또한 존재한다.- 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- 복합명사의 경우 URI의 가독성을 높이기 위해 하이픈(-) 을 사용하며 밑줄(_) 은 사용하지 않는다.
- 파일의 확장자는 URI에 포함시키지 않는다.
- URI에는 동사 표현이 들어가면 안된다.
http://localhost/user/get/id.. - 자원에 대한 행위 표현은 HTTP Method 를 사용하여 표현한다.
GET : 자원을 조회할 때 사용한다.
POST : 자원을 생성하거나 정보를 전달할때 사용한다.
PUT/PATCH : 자원을 수정할 때 사용한다.
(PUT 은 자원을 모두 업데이트 해야할 경우 사용한다. PATCH 는 자원의 일부를 업데이트 해야할 경우 사용한다.)
DELETE : 자원을 삭제할 때 사용한다.POST http://localhost/users (생성)✅ PUT/PATCH http://localhost/users/123 (수정)✅ DELETE http://localhost/users/123 (삭제)✅ GET http://localhost/users/123 (조회)✅ GET http://localhost/users (전체조회)✅ - 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
URI 에서 {id} 값이 변화하므로 해당 id 값은 자원을 식별하기 위한 유일한 값이어야 한다.PUT/PATCH http://localhost/users/{id} DELETE http://localhost/users/{id} GET http://localhost/users/{id}
[REST Api 설계원칙]
앞서 REST란 클라이언트와 서버가 데이터를 주고받는 방식에 대한 설계 원칙임을 이야기 하였다.
그렇다면 RESTful 한 설계를 하기 위해서 어떤 원칙들이 존재할까
REST 설계 원칙에는 총 6가지가 존재한다.
Client-server 구조 : 클라이언트와 서버는 서로 독립적이어야 하며, 클라이언트는 URI 리소스만을 알아야 한다.
이 둘은 독립적으로 개발되거나 대체될 수 있어야 한다.Stateless : 클라이언트의 요청에는 요청을 이해할 수 있는 모든 정보가 포함되어있어야 한다.
서버는 요청에 대한 어떤 정보도 저장하지 않으며 세션이나 인증/인가 와 같은 정보는 클라이언트의 요청에 모두 포함되어야 한다.Cacheable : 서버는 응답 헤더에 해당 요청의 캐싱 가능 여부를 제공해야하며 클라이언트는 이를 캐싱하여 서버와 클라이언트간의 통신 효율을 높인다.
Uniform interface : REST Api 에서는 일관된 인터페이스를 제공하도록 하기 위해 4가지의 설계원칙을 제공하고있다.
identification of resources : 요청 시 개별 자원을 식별할 수 있어야 한다.
manipulation of resources through representations : 어떤 자원에 대하여 작업하기 위한 적절한 표현과 데이터가 갖추어져 있다면 서버는 자원을 조작할 수 있다.
PUT /users/123 ← 어떤 자원인지 명시 Content-Type: application/json ← 메타데이터 (JSON 형식이라고 알려줌) Authorization: Bearer token123 ← 메타데이터 (권한 정보) { ← 적절한 표현 (JSON) "name": "김영희", "email": "kim@example.com", "phone": "010-1234-5678" }
Layered system : REST는 다중 계층 구조를 가지도록 허용한다. (Api 서버와 DB 서버, 인증 서버를 분리하는 등..)
각 계층은 다른 계층의 대한 정보를 얻을 수 없다. 클라이언트는 Api 서버 하고만 상호작용하며 이외의 계층과는 상호작용 하거나 알 수 없다.Code on demand(필수아님) : 서버가 클라이언트에서 실행시킬 수 있는 로직을 전송하여 클라이언트가 사전에 구현해야할 기능을 간소화시킬 수 있다.
{ "formConfig": { "fields": [ {"type": "text", "name": "username", "required": true}, {"type": "email", "name": "email", "required": true} ] }, "renderScript": "function renderForm(config) { config.fields.forEach(field => { /* 폼 생성 로직 */ }); }" }
'BE > 스프링' 카테고리의 다른 글
| [Spring Boot] rest api 스프링부트 회원관리 기능 구현하기! (CRUD) (1) | 2025.05.29 |
|---|---|
| [Spring Boot] Github Actions 를 활용한 CI/CD 파이프라인 구축(개념) (0) | 2025.04.17 |
| [Spring Boot] MCP(Model Context Protocol) 기본 개념 및 테스트(1) (0) | 2025.04.04 |
| [Spring Boot] selenium 을 사용한 네이버 플레이스 리뷰 크롤링(2) (0) | 2025.03.30 |
| [Spring Boot] selenium 을 사용한 네이버 플레이스 리뷰 크롤링(1) (4) | 2025.03.29 |