HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🐣
프론트엔드 데브코스 3기 교육생
/
📚
3기 스터디 가이드
/
📒
CS 학습 스터디
/
🛌
REST API (민재)
🛌

REST API (민재)

 

REST + API ?

 

API란?

Application Programming Interface의 약자입니다.
API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.
컴퓨터와 인간을 연결시키는 사용자 인터페이스(UI)와 반대로, API는 컴퓨터나 소프트웨어를 서로 연결한다.

REST란?

로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개
Representational State Transfer의 약자인 REST는 API 작동 방식에 대한 조건을 제시하는 소프트웨어 아키텍쳐입니다.
쉽게 말하자면 기계와 기계가 웹을 이용하여 통신을 할때 정해진 통신 규칙입니다. 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌습니다.
뭐가 좋을까?
  • 대규모의 고성능 통신을 안정적으로 지원할 수 있다.
  • 쉽게 구현, 수정이 가능해서 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.
 
듣기에는 좋아보이는데 이 아키텍처는 어떤 아키텍쳐 스타일 원칙을 가지고 있을까요?
  1. 균일한 인터페이스
      • 요청이 어디에서 오는지와 무관하게, 동일한 리소스에 대한 모든 API 요청은 동일하게 보여야 합니다.
      • 형식은 서버 애플리케이션에 있는 리소스의 내부 표현과 다를 수 있습니다. 예를 들어, 서버는 데이터를 텍스트로 저장하되, HTML 표현 형식으로 전송할 수 있습니다.
  1. 클라이언트-서버 디커플링
      • 클라이언트와 서버 애플리케이션은 서로간에 완전히 독립적이여야 한다.
      • 클라이언트 애플리케이션이 알아야하는 유일한 정보는 요청된 리소스의 URI이다.
      • 요청된 데이터를 전달하는것 말고는 클라이언트 애플리케이션을 수정하지 않아야 한다.
  1. 무상태 (Stateless)
      • REST 아키텍쳐에서 무상태는 서버가 이전의 모든 요청과 독립적으로 클라이언트 요청을 완료하는 통신 방법을 나타냅니다.
      • 각 요청 간에 클라이언트의 정보를 저장하지 않고 분리하여 서로 연결되어있지 않아야합니다.
      • 이는 서버가 매번 요청을 완전히 이해해서 이행할 수 있게 해줍니다.
  1. 계층화 시스템
      • 호출과 응답이 서로 다른 계층을 통과합니다.
      • 클라이언트와 서버 애플리케이션이 서로 간에 직접 연결된다고 가정 X
      • 통신 루프에는 다수의 서로 다른 중개자가 있을 수 있다.
  1. 캐싱 가능성
      • 가급적 리소스를 클라이언트 또는 서버측에서 캐싱할 수 있어야 합니다.
      • 서버 응답에는 전달된 리소스에 대해 캐싱이 허용되는지 여부에 대한 정보도 포함되어야 합니다.
      • 서버측 확정성 증가와 함께 클라이언트 측의 성능 향상을 동시에 얻을 수 있습니다.
  1. Code on demand (optional)
      • 일반적으로 정적인 리소스를 전송하지만 특정한 경우에는 응답에 프로그래밍 코드를 포함할 수 있다.
 

API 발전 타임라인

notion image

REST API

  • 특정 기술을 의미하는게 아닌 두 가지 개념이 합쳐진 것입니다.
  • 아키텍쳐 스타일의 디자인 원칙을 준수하는 API입니다. 이러한 이유 때문에 REST API를 종종 RESTful API라고도 합니다.
  • HTTP를 이용한 통신에서 HTTP가 가진 잠재력을 최대한 이용할 수 있도록 유도하는 모범사례.
    • notion image
 

HTTP request method

  • HTTP를 사용하기 때문에 같은 매서드를 사용합니다
notion image
ex - GET /movies/avatar2

REST API 설계시 지켜야하는 규칙

잘 설계된 REST API는 각 요청이 어떤 동작이나 정보를 위한 것인지 그 요청의 모습 자체만으로 추론이 가능하다면 best
1. URI는 동사보다는 명사를, 대문자보다는 소문자를 사용하여야 한다.
2. 마지막에 슬래시 (/)를 포함하지 않는다.
3. 언더바 대신 하이폰을 사용한다.
4. 파일확장자는 URI에 포함하지 않는다.
5. 행위를 포함하지 않는다.
 

결론

알아본 내용들을 토대로 RESTful API를 사용할 때 확장성, 유연성, 독립성에서 이점을 얻을 수 있다.

참고

RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS
RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스입니다. 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 합니다. 예를 들어 월간 급여 명세서를 생성하려면 인보이스 발행을 자동화하고 내부의 근무 시간 기록 애플리케이션과 통신하기 위해 내부 계정 시스템이 데이터를 고객의 뱅킹 시스템과 공유해야 합니다.
RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS
https://aws.amazon.com/ko/what-is/restful-api/?nc1=h_ls
RESTful API란 무엇인가? - RESTful API 초보자 가이드 - AWS
REST API란 무엇이며 다른 유형과 어떻게 다른가요? | AppMaster
API 또는 응용 프로그래밍 인터페이스는 서로 다른 응용 프로그램 간의 상호 작용 및 통신을 허용하는 기능과 규칙을 제공합니다. 이러한 인터페이스는 애플리케이션 통합을 용이하게 하여 개발자가 강력한 디지털 제품을 만들 수 있도록 합니다. API는 요청과 응답을 통해 애플리케이션 사이를 중재합니다. 예를 들어, 사용자의 기존 Twitter 계정을 통한 애플리케이션 등록은 개발자가 앱에 통합한 Twitter API를 통해 발생합니다.
REST API란 무엇이며 다른 유형과 어떻게 다른가요? | AppMaster
https://appmaster.io/ko/blog/rest-apiran-mueosimyeo-dareun-yuhyeonggwa-eoddeohge-dareungayo
REST API란 무엇이며 다른 유형과 어떻게 다른가요? | AppMaster
rest-apis
이 안내서에서는 네트워크 애플리케이션의 관리를 위한 아키텍처 스타일인 REST API를 통해 소프트웨어 개발 프로세스를 간소화하는 방법을 알아봅니다.
rest-apis
https://www.ibm.com/kr-ko/cloud/learn/rest-apis
rest-apis
 
Bad Example - http://test.com/Running/ Good Example - http://test.com/run/
Bad Example - http://test.com/test/   Good Example - http://test.com/test
Bad Example - http://test.com/test_blog Good Example - http://test.com/test-blog
Bad Example - http://test.com/photo.jpg  Good Example - http://test.com/photo
Bad Example - http://test.com/delete-post/1 Good Example - http://test.com/post/1