REST API

2020. 5. 22. 17:11개발노트

API란?

쉽게 말해서 서버와 클라이언트가 서로 정보(data)를 교환할 수 있도록 하는 것

 

REST API란?

예를 들자면 구글 맵을 이용하고 싶거나 기상청의 날씨 데이터를 가져올 때 API를 사용하는 것(Open API)

그리고 웹 페이지를 이동 할 때 필요한 정보를 전달하는 것

기본적으로 HTTP동작 방식(서버와 클라이언트 사이의 요청, 응답)을 사용

 

REST API의 구성요소는 크게 3가지가 있다.

 

  • Resource(자원) - URI
  • Verb(행위) - HTTP Method
  • Repressentations(표현) - Json, xml 등

위 구성요소의 자원에 URL이 아닌 URI가 쓰여있다.

무엇이 다른 걸까?

  • URL은 자원의 위치 즉, 파일(HTML 문서)의 위치를 의미
  • URI는 인터넷 상의 자원을 식별하기 위한 문자열(URI에는 요청을 위한 id, pw 등이 포함될 수 있다.)

메서드의 종류

  • GET - 정보를 가져와서 조회하기 위해서 사용되는 방식
    • URL에 변수를 포함시켜 요청
    • 데이터를 헤더에 포함하여 전송
    • URL에 데이터가 노출되어 보안에 취약
    • 전송 길이에 제한이 있음
    • 캐싱할 수 있음(재 요청 시 빠른 접근을 위해 레지스터에 데이터를 저장시키는 것 ex. 즐겨찾기 저장)

 

  • POST - 데이터를 서버로 제출해 추가, 수정하기 위해 사용하는 방식
    • URL에 변수를 노출하지 않고 요청
    • 데이터를 바디에 포함시켜 전송
    • URL에 데이터가 노출되지 않아 보안성 좋음
    • 전송 길이에 제한이 없음
    • 캐싱이 불가능

 

  • PUT - 정보를 업데이트하기 위해 사용
  • DELETE - 정보를 삭제하기 위해 사용

 

REST API의 조건

  • Uniform Interface(일관된 인터페이스)
    • 요청에 대해 일관적으로 처리해야 한다.
    • 클라이언트의 플랫폼에 무관하며 특정 언어, 기술에 종속받지 않아야 한다.

 

  • Stateless(무상 태성)
    • 서버는 각각의 요청을 별개의 것으로 인식하고 처리해야 한다.
    • 쿠키, 세션에 작업을 위한 상태 정보를 저장, 관리하지 않는다.

 

  • Cacheable(캐시 가능)
    • 캐싱을 구현해 대량의 요청을 효율적으로 처리할 수 있어야 한다.

 

  • Client-Server Architecture (서버-클라이언트 구조)
    • API자원을 가지고 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트
    • 서버는 API를 제공, 클라이언트는 사용자 인증 등을 직접 관리하는 등 역할을 구분한다.

 

  • Self-Descriptiveness(자체 표현)
    • 요청 메시지(URI)만 보고 전달 내용, 어디로 전달하는지 등을 쉽게 이해할 수 있어야 한다.

 

  • Layered System(계층 구조)
    • 서버는 다중 계층으로 구성될 수 있고 계층을 추가, 변경할 수 있다.
    • 클라이언트는 서버와 직접 통신하는지, 중간 서버와 통신하는지 알 수 없다.

 

왜 쓰는 걸까?

확장성과 재사용성을 높여 유지 보수, 운용이 편리해진다.

웹 개발 표준을 지키고 상호운용성 유지를 위해

(다른 웹 브라우저, 다른 OS, 다른 서버.... 에서 모두 동작이 가능하도록 하기 위해)