2011-01-05 1 views
15

Representational State Transfer의은 무엇을 언급합니까?REST (Representational State Transfer)의 "상태 전 송"은 무엇을 말합니까?

이에 대한 설명이 있지만 (예 : here) 아직 이해가되지 않습니다. 예를 들어 기사에 있습니다.

표현은 클라이언트 응용 프로그램을 상태로 만듭니다.

왜? 국가 (이해할 수 있듯이, 세션과 같은 것)가 자원의 표현과 관련이 있습니까?

+0

링크에서이 응답을 참조하십시오. http://stackoverflow.com/a/37659395/3762855 –

+0

또한이 링크에서 답변을보십시오. https://stackoverflow.com/a/37683965/3762855 –

답변

15

왜? 국가 (이해할 수 있듯이, 세션과 같은 것)가 자원의 표현과 관련이 있습니까?

개체에는 특성 (또는 상태)과 동작 (또는 방법)이 있습니다. 내가 서버에 바탕 화면에서 개체를 이동하려면

나는 다음을 수행해야합니다 :

  1. 는 객체의 상태의 표현을 만듭니다.

  2. 해당 표현을 데스크톱에서 서버로 전송합니다.

전송 방법은 없습니다. 두 컴퓨터에 동일한 클래스 정의를 설치합니다.

그래서 REST는 객체의 현재 상태를 표현하기 때문에 객체를 재구성 할 수있는 다른 서버로 전송할 수 있습니다.

우리는 개체의 상태 (특성) 만 보냅니다. 그리고 우리는 그 상태에 대한 일련의 외부 표현을 만들어야합니다.

+0

@ S.Lott : 그 행동은 어떨까요? REST가 REST를 다루는가, 아니면 그 행동이 자원에 대해 관심이없는 것인가? – user2011

+2

어떻게 들리지만, State Transfer는 객체 직렬화와 완전히 동일하지 않습니다. –

+0

@Darrel Miller : correct. 그것은 퍼즐의 유일한 부분입니다. –

10

클라이언트 응용 프로그램이 일종의 거대한 상태 시스템이라고 생각하십시오. 클라이언트의 초기 상태는 서버에서 반환 된 첫 번째 표현과 같습니다. 반환 된 표현의 링크는 가능한 "상태 전이"를 제공합니다.

하나의 주목할 점은 수동 및 능동의 두 가지 주요 유형의 링크가 있다는 것입니다. <img><link rel="stylesheet">과 같은 수동 링크는 실제로 상태 전환을 발생시키지 않고 단순히 현재 상태를 증가시킵니다. <form><a>과 같은 링크는 활성 링크이므로 상태가 전환됩니다. 이 링크 중 하나를 따르면 새 클라이언트 상태는 반환 된 표현 인 상태 전송과 같습니다.

기존 데스크톱 클라이언트 응용 프로그램을 작성하는 데 익숙하다면 매우 근본적인 아키텍처라는 것을 알게 될 것입니다. 하룻밤 사이에 당신이 뻔뻔스럽게 굴지 않을 것입니다. 처음에는이 접근 방식이 매우 제한적으로 보일 수도 있지만 클라이언트 응용 프로그램이 많은 동시 실행 상태 시스템의 호스트가 될 수 있다고 생각하면 원격 객체 아키텍처를 사용하면서 느슨한 상태를 유지할 수있는 모든 것을 할 수 있음을 깨닫기 시작할 것입니다 웹 브라우저의 커플 링.

+1

이전 전환과 동일한 전환합니까? ST (이전)는 로컬 macine에 저장하는 대신 매번 고객 상태를 전송한다는 의미일까요? – Jaskey

+1

@ Jaskey 전환은 전환을 수행하는 효과입니다. 클라이언트 상태를 서버로 전송하거나 서버에서 클라이언트로 리소스 상태를 전송 중일 수 있습니다. –

+0

다른 질문입니다. memcache 또는 db를 사용하여 "loggedin"과 같은 사용자 상태를 저장하는 경우, 이는 확실히 REST 응용 프로그램이 아닙니까? 클라이언트가 자체 상태에 대한 책임을 져야하는 많은 게시물이나 비디오를 보았으며 서버에 상태가 저장되지 않습니다. 그러나 많은 게시물은 상태가없는 응용 프로그램을 만들기 위해 db 또는 memcache를 사용하여 상태를 저장할 수 있으므로 지금 당황 스럽습니다. 그래서 질문을 던집니다. http://stackoverflow.com/questions/27016314/does-ststate-transfer - 나머지 - 의미 - 그 - 상태 -해야 - 개최 -해야 - 클라이언트, 나는 당신이 거기에 대답하는 분 걸릴 수 있다면 그것을 감사드립니다! 고맙습니다! – Jaskey

1

웹은 리소스로 구성됩니다. 자원이란 관심있는 항목입니다.예를 들어, 보잉 항공기 사가 747 자원을 정의 할 수 있습니다. 클라이언트는 thisURL : http://www.boeing.com/aircraft/747A 리소스 표현과 함께 해당 리소스에 액세스 할 수 있습니다 (예 : Boeing747.html). 표현은 클라이언트 응용 프로그램을 하나의 상태로 만듭니다. 클라이언트가 inBoeing747.html에서 하이퍼 링크를 탐색 한 결과 다른 리소스에 액세스합니다. 새로운 표현은 클라이언트 응용 프로그램을 또 다른 상태로 만듭니다. 따라서 클라이언트 응용 프로그램은 각 자원 표현 -> Representational State Transfer!로 상태를 변경 (전송)합니다.