API,REST, RESTful 이란 무엇인가요?

thgus·2024년 2월 20일

공부

목록 보기
1/5

출처: RESTful API란?
출처: REST란 무엇인가?
출처: API란?

API란 무엇인가

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다. 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성요소가 서로 통신할 수 있게 하는 메커니즘이다.
API의 맥락에서 어플리케이션은 고유한 기능을 가진 모든 소프트웨어를 나타낸다.
인터페이스는 두 어플리케이션 간의 서비스 계약이라고 할 수 있다. 데이터를 주고 받기 위한 방법으로, 어떠한 데이터를 제공 받을 수 있는지에 대한 규격들을 API라고 한다.

웹 API는 클라이언트와 웹 리소스 사이의 게이트 웨이라고 생각할 수 있다.

Open API

API는 사용법과 용도에 따라 오픈, 비공개 API가 있다. 오픈 API는 누구나 쉽게 접근하여 정보를 공유할 수록 만들어진 규격이고, 비공개 API는 권한있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 규격이다.
오픈 API를 제공하는 이유는, 자사 서비스의 기능을 다양한 서비스에서 활용할 수 있도록 유도해 서비스 저변을 넓히는 데에 목적이 있다. (예: 카카오 API에서 제공하는 로그인, 소셜, 메세지, 지도 등...)

REST란?

REST란

구체적인 개념으론 HTTP URI(Uniform Resource Identifier)을 통해 자원(Resource)를 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

  • Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉,자원(resource)의 표현(representation)에 의한 상태 전달이다.

  • 월드 와이드 웹(www)와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식으로, REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 스타일이다.

  • 즉, REST는 자원 기반의 구조(ROA,Resource Oriented Architecure) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resourece를 처리하도록 설계된 아키텍쳐를 의미한다.

  • 웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

    	* CRUD Operation이란?
    
            Create: 생성(POST)
            Read : 조회(GET)
            Update : 수정(PUT)
            Delete : 삭제(DELETE)
            HEAD: header 정보 조회(HEAD)

REST의 장단점

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
  • HTTP 프로토콜의 표준을 활용하여 추가적인 장점을 함께 가져갈 수 있다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용 가능
  • Hypermedia API의 기본을 충실히 지키며 범용성을 보장
  • 메세지가 의도하는 바를 쉽게 파악 가능
  • 여러가지 서비스 디자인에서 생길 수 있느 문제 최소화
  • 서버와 클라이언트의 역할을 명확히 분리

단점

  • 표준이 존재하지 않는다.
  • 사용할 수 있는 메소드가 4가지 밖에 없다.(HTTP Method 형태가 제한적)
    • HTTP 메소드는 : GET, POST, PUT, DELETE
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 값이 어렵게 느껴진다.
  • 구형 브라우저가 아직 제대로 지원해주지 못하는 부분이 존재한다.
    • pushState를 지원하지 않음.
    • PUT, DELETE를 사용하지 못함

REST가 필요한 이유?

  • 애플리케이션 분리 및 통합
  • 다양한 클라이어언트의 등장
  • 최근의 서버 프로그램은 다양한 브라우저와 안드로이드, 아이폰과 같은 모바일 디바이스에서도 통신할 수 있어야 한다.\

REST 구성요소

  • 자원(Resource): URI
    • 모든 자원에 고유한 ID가 존재하고, 이 자원은 Server에 존재한다.
      자원을 구별하는 ID는 ‘/groups/:group_id’와 같은 HTTP URI 다.
      Client는 URI를 이용해서 자원을 지정하고 해당 자원의 상태(정보)에 대한 조작을 Server에 요청한다.
  • 행위(Verb): HTTP Method
    • HTTP 프로토콜의 Method를 사용한다.
  • 표현(Representation of Resource)
    • Client가 자원의 상태(정보)에 대한 조작을 요청하면 Server는 이에 적절한 응답(Representation)을 보낸다.
      REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 Representation으로 나타내어 질 수 있다.
      JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.

REST 특징

  • Server-Client (서버-클라이언트 구조)
  • Stateless (무상태)
  • Layered System (계층화)
  • Code-On-Demand (opttional)
  • Uniform Interface (인터페이스 일관성)

REST API

REST 기반으로 서비스 API를 구현한 것. 최근 Open API,마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐) 등을 제공하는 업체 대부분은 REST API를 제공한다.

특징

  • 사내 시스템들도 REST 기반으로 시스템을 분산해 확장성과 재사용성을 높여 유지보수 및 운용을 편리하게 할 수 있다.
  • REST 는 HTTP 표준을 기반으로 구현하므로, HTTP를 지원하는 프로그램 언어로 클라이언트, 서버를 구현할 수 있다.
  • REST API를 제작하면 델파이 클라이언트 뿐 아니라, 자바, C#, 웹 등을 이용해 클라이언트를 제작(사용자가 서버로 부터 데이터를 요청하고 응답받는 소프트웨어 개발)할 수 있다.

REST API 설계 기본 규칙
1. URI는 정보의 자원을 표현해야한다. (명사, 소문자, doc은 단수, 컬렉션은 복수, 스토어는 복수)
2. 자원에 대한 행위는 HTTP Method(GET,PUT,POST,DELETE 등)로 표현한다.
3. 슬래시 구분자(/ )는 계층 관계를 나타낼 때 사용.
4. URI 마지막 문자로 슬래시(/ ) 포함하지 않는다.
5. 하이픈( - )은 URI 가독성을 높이는데 사용
6. 밑줄(_ )은 URI에 사용하지 않는다.
7. URI 경로에는 소문자가 적합하다.
8. 파일 확장자는 URI에 포함하지 않는다.
9. 리로스 간에 연관 관계가 있는 경우

URI 와 URL

  • URI (Uniform Resource Identifier)
    리소스를 고유하게 식별하는 일반적인 방법으로, URI는 URL의 상위개념이다.자원을 식별하는 방법에 대한 일반적인 규칙을 정의한다.

  • URL (Uniform Resource Locator)
    인터넷 상의 리소스의 위치를 나타내는 특별한 형태의 URI이다. URL은 리소스의 위치를 포함하고 있으며, 주로 웹페이지, 이미지, 동영상 등의 웹 리소스를 가리킨다. URL은 프로토콜(일반적으로 HTTP, HTTPS), 호스트명, 파일 경로 등의 구성 요소로 구성된다.

모든 URL은 URI이지만, 모든 URI는 URL이 아니다. URI는 리소스를 식별하는데 필요한 모든 형태의 식별자를 포함할 수 있지만, URL은 리소스의 위치를 명시적으로 지정하는 형태의 URI이다.

RESTful 이란...

일반적으로 REST라는 아키텍쳐를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어로, 'REST API'를 제공하는 웹 서비스를 'RESTful'하다고 할 수 있다.

이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것으로, 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 목이다.

profile
어쩌다보니IT

0개의 댓글