REST API

최찬호·2023년 3월 27일
0

API

  • Application Programming Interface의 약자
  • 소프트웨어 서로간의 통신을 위해 따라야 하는 규칙
  • 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.

REST

#아키텍쳐 스타일: 제약조건의 집합
  • REpresentational State Transfer의 약자
  • 분산 하이퍼미디어 시스템(예: 웹)을 위한 아키텍쳐 스타일

REST를 구성하는 스타일은 client-server, stateless, cache ,uniform interface, layered system, code-on-demand가 있다.

client-server

stateless

  • 서버와 클라이언트간의 오가는 요청과 응답들은 서로 독립적이다.
  • 클라이언트는 서버에게 서버의 정의에 의해 동작을 수행하기 위한 모든 정보를 매요청마다 포함하여 전송해야 한다.

cache

  • Restful 웹 서비스는 캐시 가능 또는 캐시 불가능으로 정의되는 API응답을 사용하여 캐싱을 제어한다.

uniform interface

  • identification of resources
    - 요청은 리소스를 식별한다. #URI
  • manipulation of resources through representations
    - Representation 전송을 통해서 리소스를 조작해야한다.
    • 클라이언트는 리소스 수정, 삭제를 요청시 동작을 수행하기 위한 충분한 정보를 리소스표현에서 가지고 있어야 한다.
    • 서버는 리소스를 자세히 설명하는 메타데이터를 전송한다
  • self-descriptive
    - 메시지는 스스로를 설명해야한다.
    • 클라이언트와 서버가 보내는 메시지는 어떤 Media type인지, Host는 누구며 데이터는 어떤의미인지 설명해야 한다.
  • HATEOAS
    - Hypermedia As The Engine Of Application State
    • 애플리케이션의 상태는 Hyperlink를 이용해 전이되어야 한다.
    • late binding
      • 어떤 상태로 전이가 완료되고 나서야 그 다음 전이될 수 있는 상태가 결정된다.
        • 링크는 동적으로 변경될 수 있다.

layered system

  • 클라이언트와 서버사이의 다른 승인된 중계자에게 연결할 수 있으며 여전히 서버로부터도 응답을 받는다.
  • 클라이언트의 요청을 이행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층으로 여러 서버에서 실행되도록 Restful웹서비스를 설계할 수 있다.
  • 이러한 계층은 클라이언트에게는 보이지 않는 상태로 유지된다.

code-on-demand

  • 서버에서 클라이언트에게 코드를 보낼 수 있고 실행할 수 있어야 한다.

REST API

REST 아키텍처 스타일을 따르는 API입니다.
URI를 통해 리소스를 표현하고 HTTP Method를 통해 행동을 정의 합니다.
GET, POST, PUT, DELETE, PATCH 등이 있으며 해당 HTTP Method를 통해 CRUD를 표현 합니다.

GET

리소스 조회시 사용하는 메소드로 서버의 상태를 변경시키지 않습니다. 그리고 동일한 리소스에 한번 혹은 그 이상 여러번 조회를 해도 요청결과가 동일하기에 멱등성을 가지는 메소드입니다.

POST

주로 새로운 리소스를 생성, 추가시 사용하는 메소드로 매 요청시 새로운 리소스를 만들어 서버의 상태를 변경시킵니다. 매 요청시 새로운 리소스에 대한 응답 결과를 받으므로 멱등성을 가지지 않는 메소드립니다.

PUT

주로 리소스 수정시 사용하는 메소드로 서버에 존재하는 기존의 리소스를 수정 하기에 상태를 변경합니다. 하지만 동일한 리소스에 동일한 Represntation을 여러번 전송시 같은 응답을 기대할 수 있으므로 멱등성을 가집니다.

PUT은 기존의 리소스를 추가전송한 리소르로 대체하는 것입니다. #덮어쓰기

DELETE

리소스 삭제시 사용하는 메소드로 기존서버에 존재하는 리소스를 삭제함으로써 서버의 상태를 변경시킵니다. 하지만 첫 요청 이후 같은 응답을 기대할 수 있으므로 멱등성을 가집니다.

PATCH

RFChttps://www.rfc-editor.org/rfc/rfc5789스펙에서 리소스의 부분수정시 사용하는 메소드로 정의되어 있습니다. 기존의 리소스를 수정 하기에 서버의 상태를 변경합니다. 멱등성은 가질 수도 있고 아닐 수도 있습니다.

출처
https://www.youtube.com/watch?v=RP_f5dMoHFc
https://aws.amazon.com/ko/what-is/restful-api/

profile
체득하고 이해하자

0개의 댓글