본문으로 바로가기

REST API 란

category n년차 개발자 2019. 12. 17. 22:26
반응형


안녕하세요. REST API에 대해 공부하면서 포스팅해보려고 합니다.

먼저 REST API를 알기 전에 HTTP 프로토콜에 대한 개념을 설명하려고 합니다.

 

HTTP (HyperText Transfer Protocol) 란?

  1. 클라이언트와 서버가 요청을 하고 응답을 하기 위해 따르는 프로토콜.
  2. HTML 문서, 이미지, 동영상, 오디오, 텍스트 문서 등을 주고받을 수 있음.

HTTP 특징

  1. HTTP 프로토콜은 기본적으로 클라이언트의 요청(request) 응답(response)로 구현됨.
  2. 서버에 요청을 하고 응답을 받으면 서버와의 통신이 끊기게 됨.
  3. HTTP는 비연결형 프로토콜이라고 한다.

장점

  1. 프로토콜을 직관적으로 이해하기 쉽고, 구현이 단순함
  2. 클라이언트의 요청에 대한 처리 결과를 응답으로 전송하고 나면 접속이 종료되기 떄문에 더 많은 클라이언트의 요청을 처리할 수 있다.

단점 

  1. 각 클라이언트 요청마다 새로운 접속이 이루어지기 떄문에 서버 측에 네트워크 자원의 낭비가 적지만, 새로운 접속을 맺기 위해 발생하는 오버헤드 즉, 수행 속도의 감소가 지속적으로 발생
  2. 동일한 클라이언트가 접속하더라도, 이전의 정보가 남아있지 않아서 클라이언트의 정보에 대한 비교가 불가능

HTTP 메소드 (대표적인 4가지)

  • GET : 정보를 요청하기 위해 사용(Read)
  • POST : 정보를 입력하기 위해 사용(Create)
  • PUT : 정보를 업데이트하기 위해 사용(Update)
  • DELETE : 정보를 삭제하기 위해 사용(Delete)

REST (REpresentational State Transfer)

REST (Representational state transfer)는 소프트웨어 프로그램 아키텍처의 한 형식 자세히 말하면 HTTP의 장점을 최대한 활용할 수 있는 아키텍처가 REST입니다.

(HTTP 기반으로 필요한 자원에 접근하는 방식을 정해놓은 아키텍처 스타일입니다.)

 

REST 구성

  • 자원(Resource) - URL
  • 행위(Verb) - HTTP 메서드
  • 표현(Representations)

REST 특징

1. 클라이언트 / 서버 구조 (Client - Server)

         - 일관적인 인터페이스로 분리되어야 한다. (클라이언트(React, Vue~)와 서버(REST API)가 하는 역할이 구분)

2. 무상 태성 (Stateless)

         - 상태를 유지하지 않음. (위에서 설명한 HTTP 프로토콜 특징)

3. 캐시 처리 가능 (Cacheable)

         - 웹에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.

4. 자체 표현 구조 (Self-descriptiveness)

         - REST API 메시지(리턴 값)만 보고도 쉽게 이해할 수 있는 자체 표현의 구조로 되어 있다.

5. 계층화 시스템 (Layered System)

         - 계층형 시스템 구조가 되어야 한다. (서버에서 proxy, gateway, 암호화 등의 기능들을 사용해도 클라이언트는 몰라야 한다.

6. 유니폼 인터페이스 (Uniform Interface)

         - HTTP 표준에만 따른다면 모든 플랫폼에서 사용이 가능하다.

 

REST API URL 규칙

1. URI 경로에서 소문자를 선호해야 합니다.

http://api.example.com/my-folder/my-doc

2. 후행 슬래시 (/)는 URI에 포함하지 않아야 합니다.

http://api.canvas.com/shapes/   (X)
http://api.canvas.com/shapes    (O)

3. 계층 관계를 나타내려면 슬래시 구분 기호 (/)를 사용해야 합니다.

http://api.canvas.com/shapes/polygons/quadrilaterals/squares
http://api.canvas.com/모양/다각형/사변형/사각형

4. URI의 가독성을 높이려면 하이픈 (-)을 사용해야 합니다.

http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post

5. 밑줄 (_)은 URI에 사용해서는 안됩니다.

 

6. 파일 확장자는 URI에 포함하지 않아야 합니다.

http://api.college.com/students/3248234/courses/2005/fall.json  (X)
http://api.college.com/students/3248234/courses/2005/fall       (O)
반응형