May 11, 2021, TIL (Today I Learned) - REST API

Inwoo Hwang·2021년 8월 26일
0
post-thumbnail

학습내용


Rest API

REST 아키텍쳐의 제약 조건을 준수하는

학술적인 의미의 REST API

WEB (1991)

Q: 어떻게 인터넷에서 정보를 공유할 것인가?

A: 정보들을 hypertext로 연결한다.

​ 표현 형식: HTML

​ 식별자: URI

​ 전송 방법: HTTP

HTTP/ 1.0 (1994-1996)

Roy T. Fielding: "How do I improve HTTP without breaking the Web?"

해결책: HTTP Object Model → REST

REST를 만들게 된 계기가 위 질문에서 나온다.

REST (2000)

Roy T. Fielding, 박사 논문으로 발표

"Architectural Styles and the Design of Network-based Software Architectures"

한편...

API

XML-RPC

Salesforce API (SOAP)

SOAP

  • 복잡하다
  • 규칙 많다
  • 어렵다

flickr API (SOAP 형태, 그리고 REST 형태)

REST

  • 단순하다
  • 규칙이 적다
  • 쉽다

결국 REST가 SOAP를 이기고 world-wide api에서 승리했다.

사람들이 부르는 REST API와 Roy T. Fielding이 말하는 REST API는 다른가?

REST API

REST 아키텍처를 따르는 것

REST

분산 하이퍼미디어 시스템을 위한 아키텍쳐 스타일

아키텍쳐 스타일

제약조건의 집합

REST를 구성하는 스타일

  • client-server
  • stateless
  • cache
  • uniform interface
  • layered system
  • Code-on-demand (optional)

Uniform Interface의 제약조건

  • identification of resources
  • manipulation of resources through representations
  • Self-descriptive messages
    • 많은 REST API가 지키지 못하는 제약 조건
  • hypermedia as the engine of application state (HATEOAS)
    • 많은 REST API가 지키지 못하는 제약 조건

Self-descriptive message

메시지는 스스로를 설명해야 한다.

HATEOAS

애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.

우리가 사용하고 있는 웹 브라우저는 REST API를 잘 지키고 있다.

  • 웹 페이지를 변경했다고 웹 브라우저를 업데이트할 필요 없다.

웹 브라우저를 업데이트했다고 웹 페이지를 변경할 필요도 없다.

HTTP 명세가 변경되어도 웹은 잘 동작한다.

HTML 명세가 변경되어도 웹은 잘 동작한다.

*구 버전에서는 화면이 부분적으로 깨져보일 수 있지만 정상 작동한다.

APP과 REST API

우리가 만드는 앱 클라이언트 또한 서버와 REST API로 통신을 해야만 업데이트 지옥에서 빠져나올 수 있다.

개발자와 REST API

정보들이 주고 받아지는 데 있어서 개발자들 사이에서 쓰이는 형식

API

소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 Application Programming Interface라고 부른다.

로컬 프로그램인 브라우져는 Web APU로부터 자바스크립트로부터 특정 동작을 지시받는다.

REST API의 특징

각 요청의 어떤 동작이나 정보를 위한 것인지를 그 요청 모습자체로 추론이 가능하다. RESTful 하게 만든 API는 요청을 보내는 주소만으로도 대략 이게 뭘 하는 요청인지 확인이 가능하기 때문에 협업이 가능해진다.

서버에 REST API로 요청을 보낼 때는 HTTP(Hyper Text Transfer Protocol)란 규약에 따라 신호를 전송한다. http로 요청을 보낼 때 여러가지 메서드가 있는데 REST API에서는 GET, POST, DELETE, PUT, 그리고 PATCH와 같은 메서드를 사용한다.

GET, DELETE는 우체국의 편지와 같다.

POST, PUT, PATCH는 우체국의 소포와 같다.

  • body란 주머니가 있어서 다른 메서드에 비해 더 많은 정보를 안전하게 감춰서 실어 보낼 수 있다.

Rest 규칙

여기 에서 자세한 내용을 확인하실 수 있습니다!

[참고자료]

그런 REST API로 괜찮은가

REST API가 뭔가요?

profile
james, the enthusiastic developer

0개의 댓글