본문 바로가기
Js

Rest

by 은지:) 2026. 3. 4.
728x90
반응형

 

Respresentational

State

Transfer

 

컴퓨터 시스템 간의 상호교환성 방법

 

WEB

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

 

표현방식 html

식별자 url

전송 방법 http

 

API

 

xml-rpc (1998)

by microsoft

->soft 개명

 

salesforce API (2000)

-> 짱 복잡...

 

flickr API (2004)

SOAP

REST <- 짱 짧음, 단순, 쉽다

 

2010 에는 salesforce 도  rest 씀

 

CMIS

cms 를 위한 표준

rest 바인딩 지원 

-> rest를 만든 사람(로이필딩)은 cmis 에 rest가 없다고 이야기함

 

microsoft Rest Api guidelines (2016)

https://{service}/{collection}/{id}

GET / PUT / DELETE / POST / PATCH / OPTIONS

-> rest 만든 사람(로이필딩)은 내 rest 아니라고 이야기함

 

REST API

rest api 아키텍처를 따르는 api

 

REST

-> 분산 하이퍼미디어 시스템(web 같은)을 위한 아키텍쳐 스타일

 

아키텍쳐 스타일

-> 제약조건의 집합

 

rest를 구성하는 스타일

- client-server

- stateless

- cache

- uniform interface

- layered system

- code-on-demand (optional) <- 서버를 코드를 클라이언트로 보내서 실행할 수 잇어야함 (js 같은 거)

 

 

uniform interface

-> 서버와 클라이언트가 독립적으로 진화하기 위해

-> 서버의 기능이 변경되어도 클라이언트를 업데이트할 필요가 없음

 

- 리소스가 url로 식별되면 좋음

- 리소스를 만들거나 삭제하거나 할 때 http 메세지에 표현을 담아서 전송하면 좋음

- 메세지는 스스로를 설명해야함

-> host 에 도메인을 넣어주던가, 응답 메세지에 컨텐츠 타입을 넣어주기

아래 사진 보면 content-type 에 application/json-patch+json 이라고 명세했는데, 이러면 클라이언트 개발자는 해당 content-type 명세 찾아가서 보면 됨

 

- 애플리케이션의 상태는 hyperlink를 이용해 전이되어야함 - hateoas

-> a 링크 같은경우 a링크를 통해서 href의 링크를 들어갈수 있는 점이 명확함

 

 

웹(Rest를 정말 잘 지킴)

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

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

- http 명세가 변경되어도 웹은 잘 동작함 - 2.0 으로 업데이트해도 잘 됨

- html 명세가 변경되어도 웹은 잘 동작함 - 5.0 나와도 잘 됨

 

 

나쁜 예

모바일 강제 업데이트

-> 서버가 변경되엇는데 클라이언트가 받쳐주지 못하는 경우

-> 웹에서는 이런 일이 거의 없음.. 

 

 

이처럼 웹은 상호 운용성에 대한 집착이 있음 - interoperability

- referer 오타지만 안 고침

- charset 잘못 지은 이름이지만 안 고침

- http 상태코드 416 포기함 

- http/0.9 아직도 지원함

 

 

 

로이필딩 : RestApi 는 꼭 지켜야 됨...

시스템 전체를 통제할 수 있다고 생각하거나, 진화에 관심이 없다면 rest에 대해 따지느라 시간을 낭비하지마세요

 

 

 

 

 

 

 

 

출처 : https://youtu.be/RP_f5dMoHFc?si=IgrFp3hAuA3_ZQzl

 

rest는 그냥 웹을 하려면 반드시 써야하는 업계 표준 느낌

 

 

728x90
반응형

'Js' 카테고리의 다른 글

observer 패턴  (0) 2025.04.27
for문 안에 setTimeout 걸면 어떻게 동작할까  (2) 2024.11.04
실행 컨텍스트와 호이스팅  (0) 2024.11.03

댓글