티스토리 뷰

Web

Web - RESTful API (1)

안론머스크 2022. 5. 29. 16:49
728x90

API (Application Programming InterFace) 란?

  • 사전적인 의미로는 응용프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있는 인터페이스를 의미한다.
  • 사전적인 의미로 이해하기란 어렵기 때문에 비유를 통하여 정리하였다.
    • 컴퓨터에 텍스트를 작성하거나 코드를 작성하기 위해서는 반드시 키보드가 필요합니다. 사용자가 키보드를 누르면 컴퓨터에 전달하고 그 후의 동작은 컴퓨터가 알아서 처리하게 됩니다. 여기서 키보드가 API라고 생각하면 된다.
  • API는 다시 말해서 한 소프트웨어가 다른 소프트웨어로 지정된 형식으로 요청 및 명령을 받을 수 있는 수단이다. 즉 소프트웨어들이 서로 상호작용하는 것을 도와주는 매개체라고 볼 수 있다.

 

왜 API를 사용하는가?

  • 개발자들이 코드를 작성하는 방법을 표준화함으로써 간소화되고 빠른 프로세스 처리를 가능하게 한다. 또한 협업을 보다 쉽게 만들어 줄 수 있는 장점이 있다.

 

Rest (Representational State Transfer)가 무엇일까?

  • 웹에 존재하는 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행하기 위해 URI를 부여하여 자원에 대한 주소를 지정하는 방법론이다.
  • CRUD Operation
    • Create : 생성(POST) = 서버에 데이터를 전송
    • Read : 조회(GET) = 서버의 지정된 URL에 있는 리소스에 접근
    • Update : 수정(PUT) = 서버의 기존 리소스를 업데이트
    • Delete : 삭제(DELETE) = 리소스 제거

 

REST 구성 요소

  1. 자원(Resource) : URI
    • 모든 자원에는 유일한 ID가 존재하고, 이 자원은 서버에 존재한다.
  2. 행위(Verb) : HTTP Method
    • HTTP 프로토콜의 Method를 사용한다.
    • HTTP 프로토콜은 GET,POST,PUT,DELETE와 같은 메서드를 제공한다. * HTTP Method 형태가 제한적이기 때문에 사용할 수 있는 메소드가 4가지 밖에 없다는 단점을 지니고 있다.
  3.  표현
    • REST에서 하나의 자원은 JSON, XML, TEXT 등 여러 형태의 표현이 가능하다.
    • 근래에는 JSON을 통해 데이터를 주고 받는다.

 

REST 특징

  1. Uniform Interface
    • URI에 대한 요청을 일관되고 한정적으로 수행하는 아키텍처 스타일을 의미한다.
  2. Stateless
    • 서버는 각각의 요청을 별개의 것으로 인식하고 이전 요청이 다음 요청에 영향을 끼쳐서는 안된다.
  3. Cacheble
  4. Client-Server Architecture
    • REST API에서 자원을 가지고 있으면 서버, 자원을 요청하면 클라이언트가 되게 된다. 서버는 API를 제공하고 클라이언트는 사용자 인증과 같은 정보를 직접 관리하는 등 역할을 확실히 구분시킴으로써 서로 간의 의존성을 줄인다.
  5. Self-Descriptiveness
    • API 요청 메세지만 보고도 쉽게 이해할 수 있는 표현 구조로 되어 있다.
  6. Layered System
    • REST API 서버는 다중 계층으로 구성될 수 있으며, 암호화 및 보안 등을 위한 계층을 추가하여 구조를 변경할 수 있다.

 

REST API 설계 규칙

  1. URI는 자원(Resource) 기준으로 작성한다.
  2. URI는 명사를 사용한다.
  3. 슬래시( / ) 는 계층 관계를 나타내는데 사용한다.
  4. 언더바( _ )는 URI에 사용하지 않는다.
  5. URI 경로에는 소문자가 적합하다.
  6. 가독성이 떨어지는 경우 하이폰( - )을 사용한다.

 

728x90

'Web' 카테고리의 다른 글

Webpack(웹팩)  (0) 2022.08.11
웹 브라우저의 동작  (0) 2022.07.30
Web- RESTful API (2)  (0) 2022.05.29
Semantic Web  (0) 2022.04.26
Web - 자기소개 페이지  (0) 2022.04.14
댓글
01-20 10:36
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
글 보관함
250x250