심화/Spring

[Spring] RESTful API란?

annovation 2025. 9. 17. 09:35

API (Application Programming Interface)

 

 RESTful API를 이해하기 위해서는 우선 API의 개념에 대해서 살펴보자

 

💡 API란?

  • API(Application Programming Interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다.
  • 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성한다.
  • 프로그래밍 방식이란, 프로그래머가 작성한 프로그램이 API 규칙에 따라 데이터를 요청하고, 응답을 받아서 사용하는 것을 의미한다. 즉, 사람이 개입할 필요 없이 프로그램끼리 통신하는 자동화된 방법을 말한다.

💡 API에서의 인터페이스(interface)

  • 인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면을 의미한다.
  • 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
쉽게 표현해보자면 API는 하나의 '약속' 이다.
서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환한다.
주문을 받으면 해당 주문의 음식을 가져다 주는 식당의 점원이라고 비유적으로 이해할 수 있다.

RESTful API

 

 앞서 살펴본 API를 설계하는 방식 중 하나는 Representational State Transfer(REST) 아키텍처 스타일이다. HTTP(Hypertext Transfer Protocol)을 사용하여 RESTful API를 구현할 수 있다.

 

💡 REST란?

  • REST는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.
  • REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.
  • REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
  • REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.

💡 RESTful API 특징

  • 응답은 보통 JSON 같은 표현 형식을 따른다.
  • URL(Uniform Resource Locator)을 사용하여 리소스(Resource)를 식별한다.

💡리소스(Resource)

  • 서버가 다루는 모든 데이터나 객체
  • ex. 사용자(/users), 특정 사용자(/users/1), 게시글(/posts/5)

💡URL(Uniform Resource Locator)

  • URL(Uniform Resource Locator)은 리소스를 식별하는 주소 역할

💡HTTP 메서드

메서드 의미 (동작) 특징 예시 요청 설명
GET 리소스 조회(Read) 서버 상태를 변경하지 않는다 (안전)
여러 번 호출해도 결과가 같다 (멱등)
GET /users 사용자 목록 가져오기
POST 리소스 생성(Create) 같은 요청을 여러 번 보내면 중복 생성될 수 있다 (비멱등) POST /users + { "name": "철수" } 새 사용자 추가
PUT 리소스 전체 수정(Update) 여러 번 호출해도 결과가 같다 (멱등). 리소스를 통째로 갱신 PUT /users/1 + { "name": "영희" } id=1 사용자 정보 수정
PATCH 리소스 일부 수정(Update) 리소스의 특정 필드만 바꿀 때 사용 PATCH /users/1 + { "age": 25 } id=1 사용자의 나이만 변경
DELETE 리소스 삭제(Delete) 여러 번 호출해도 결과는 같다 (멱등) DELETE /users/1 id=1 사용자 삭제

출처

https://teamsparta.notion.site/1-4-2252dc3ef514816ba005ff7a0d8a5059

 

챕터1-4 : 서버란 무엇일까? | Notion

네트워크란?

teamsparta.notion.site

'심화 > Spring' 카테고리의 다른 글

[Spring] PathVariable과 RequestParam  (0) 2025.09.24
[Spring] Spring MVC란?  (0) 2025.09.23
[Spring] HTTP란 무엇일까?  (1) 2025.09.22
[Spring] Apache Tomacat이란 무엇일까?  (0) 2025.09.18
[Spring] 서버란 무엇인가?  (0) 2025.09.16