2012-05-02 16 views
26

He estado leyendo por toda la red para obtener el significado exacto de dos palabras:¿Qué significa el estado representacional en REST?

estado representacional

tengo una duda. Estoy malinterpretando estos términos. Quiero aclarar el entendimiento con alguien que tiene buena idea sobre esto.

Según tengo entendido, hay un recurso ubicado en el servidor. SO Rest significa eso, transfiriendo algún estado de representación de este recurso a un cliente.

si el servidor tiene un recurso x, entonces si podemos hacer que el estado representacional y del recurso x, y transferirlo a través de la web es lo que REST significa, es correcto o cuál es el significado correcto de la misma. podría alguien explicarme esto.

+0

Posible duplicado de [¿A qué se refiere la "transferencia de estado" en Representational State Transfer (REST)?] (Http://stackoverflow.com/questions/4603653/what-does-state-transfer-in-representational-state -transfer-rest-refer-to) – Claudiu

+0

Pruebe también la respuesta en este enlace: https://stackoverflow.com/a/37683965/3762855 –

Respuesta

30

Representational State Transfer se refiere a la transferencia de "representaciones". Está utilizando una "representación" de un recurso para transferir el estado de recursos que vive en el servidor al estado de aplicación en el cliente.

Transfer

+2

Entonces, ¿siempre debemos devolver una representación JSON/xml? ¿Qué pasa con la representación de una vista? ¿Significa también que transfiero el estado y lo represento en un html? – Jaskey

+4

@Jaskey Arquitectónicamente, a REST no le importa cuál es el tipo de medio. HTML es una representación de recursos tanto como cualquier otra cosa. Cuando hace clic en un enlace en un navegador para visitar una página HTML estática, se trata de una "Transferencia de estado representacional". La nueva página HTML es el nuevo estado actual de la aplicación cliente. –

+7

¡Gracias! Pero esto me confunde, si renderizar una página también es una "transferencia de estado representacional", ¿qué no? Quiero decir, antes de descansar, qué forma típica no será la "Transferencia de estado representacional". Espero comparar estas formas para entender bien el REST, gracias por su paciencia. – Jaskey

1

Los significados de la transferencia de estado representacional es el descanso

REST ha puesto VERBO directa en el servidor

En el ejemplo contraprestación real, el valor puesto en verbo tiene comúnmente de HTTP GET y POST

Ha SIMPLE protocolo muy similar al SOAP (tiene mucho complejo!)

Si la respuesta no tiene la satisfacción, por favor, proporcione más elaborado de la pregunta

REST tiene mucho tema de discusión, es tema de muchos blog y libro

+0

Me limitaría a añadir que REST no es un "protocolo simple" solo en ese no es un protocolo en absoluto. Más de un diseño arquitectónico o estilo. SOAP es un protocolo real. – zeeple

25

Aunque REST es sin estado, que tiene la transferencia de Estado en su nombre. Es un poco confuso para todos.

sin estado

Cuando se abre una página web en el navegador, que actuará como un consumidor de servicios y el servidor www actuará como proveedor de servicios para servirle con una página web. Si se trata de una conexión normal, el cliente y el servidor realizarán un apretón de manos e iniciarán una sesión (llamada conexión TCP).

Después de eso, según el comportamiento del servidor y del cliente, el estado cambiará a ESTABLISHED, IDLE, TIMEOUT, etc. Pero en REST, estamos usando el protocolo HTTP, que es sin estado, lo que significa que el servidor no almacenará cualquier información de sesión sobre el cliente. El cliente es responsable de enviar todos los detalles requeridos por el servidor para recibir el servicio, lo que significa que cuando invocamos el URI http://somedomain:8080/senthil/services/page1 desde el servidor, tiene suficientes detalles sobre el cliente para mostrar la página1 por completo.

State Transfer

Usando el mismo ejemplo, al abrir una página web utilizando algunas URL para ver un archivo de imagen (recurso) en el servidor, el servidor www le (el cliente) muestran la imagen en algún formato, es decir, una REPRESENTACIÓN del RECURSO (archivo de imagen).

Durante este proceso, la constante estado de los recursos del servidor (es decir, el estado del archivo de imagen que se almacena en la base de datos del servidor) estará representado a clientes en un formato comprensible es decir, el estado aplicación del cliente. Por lo tanto, el estado del recurso permanecerá constante con respecto a los clientes, y solo la representación del recurso cambiará, lo que a su vez cambiaría el estado de la aplicación.

Finalmente, la representación del recurso (cómo se muestra la imagen al cliente), que cambia implícitamente el estado tanto del servidor como del cliente, se denomina REST.

+2

"que a su vez cambiar el estado de la aplicación "? ¿Cuál es la diferencia entre estos dos estados, por qué el cliente recibe el estado del recurso y su estado de aplicación cambiará? – Jaskey

+0

@Jaskey Por ejemplo: los datos en su base de datos son estado de recursos. Obtener los datos de su base de datos y mostrarlos/representarlos de alguna forma, como HTML/IMAGE/JSON/XML se llama estado de la aplicación. –

1

Creo que toda la pregunta sobre la preocupación del estilo arquitectónico REST, se trata de entender, que el autor, Roy Fielding, tuvo en mente sugerir en su disertación, un conjunto de principios arquitectónicos para construir arquitecturas basadas en el paradigma de hipertexto o hipermedia.

Este paradigma, creo, es la clave central para entender este importante tema.

Detrás del estilo de organización de una arquitectura de aplicación cliente-servidor propuesta por Roy Fielding, creo que hay una idea específica de una aplicación cliente-servidor moderna, que consiste en una especie de motor para gobernar la transición de estado de la aplicación, cuyos estados son potencialmente extensibles a infinito.

En esta visión, el Ipertext \ Ipermedia es el centro de todo el estilo arquitectónico propuesto por Fielding y el concepto clave que permite que este paradigma funcione es la "transferencia de representación (estado)".

creo que "representación" se refiere al concepto de la "transferencia", en lugar del concepto de "Estado", es decir, es que la transferencia sea representativo (de un tipo de representación), y esa es, en mi opinión, la causa principal del nombre "Transferencia de estado representacional".

Por lo tanto, el diseño de una aplicación reparador, es un diseño de primera una arquitectura basada en una red de componentes, cada uno de ellos comunicates con otros en un cliente-servidor modelo de arquitectura en capas, el envío de cada uno de ellos una representación de su estado .

Y así, el front-end, el primer cliente de esta arquitectura, los tránsitos a través de sus estados mostrando rapresentation de los estados sended por el componente o componentes, que llama endosar en una interfaz consistente uniforme y no en una api "privada"

Un tal tipo de aplicación, en la mente del autor, es potencialmente extensible a los estados infinitas, ya que sus estados no dependen de una API privada, sino que dependen de un sistema identificador unívoco (como URI) compartida por todos los agentes en esta arquitectura, en unos pocos verbos para administrar la transición de sus estados y en un sistema de transferencia representacional compartido acordado, o más.

Esta transición finaliza con la comunicación de su representación al componente del servidor llamado a través de los verbos que componen la API pública, que debe pertenecer al protocolo de comunicación sin estado utilizado por los componentes cliente-servidor.

De esta forma, esta interacción de componentes cliente-servidor consiste en intercambiar (transmitir, comunicar) representaciones de estados de componentes utilizando un protocolo sin estado.

Y el concepto central que permite que todas estas arquitecturas se extiendan potencialmente al infinito es la transferencia representacional que avala su arquitectura.

1

Imagine un diagrama de estado: lo siguiente será suficiente.

A simple state diagram courtesy LucidChart

Si este fuera el conjunto de páginas web, que comenzaría en la página Pregrado de aterrizaje para un estudiante. Según el diagrama, cuando haga clic en el enlace "Siguiente", lo llevará a Freshman página - suponga que el alumno se ha graduado. Al hacer clic en "Siguiente" varias veces, se llega a la última página.

Por supuesto, podría haber otras transiciones como "Inicio" que le permiten ir a la página predeterminada.

El estado visible del sitio web no tiene nada que ver con la forma en que el servidor implementa esta asociación internamente, es decir, los estados internos. Puede involucrar múltiples bases de datos, servidores y otras cosas. Un estudiante puede graduarse y su estado puede haberse actualizado a través de otros métodos. El cliente no tiene conocimiento de estos detalles, pero siempre puede esperar obtener un estado (conjunto) coherente y visible para el consumo humano (o máquina).

Otro ejemplo: Al mirar esta página, se encuentra en una "ubicación" particular identificable y reproducible en la jerarquía web de StackOverFlow.

Por lo tanto, RESTful State se ocupa de la navegación.

1

Cada objeto tiene algún estado (datos) y comportamiento (métodos). Para transferir el estado del objeto en el servidor en un momento particular al cliente, se necesita algún tipo de representación como JSON o xml o cualquier otro formato.

Así que REST consiste en crear la representación del estado actual del objeto y transferir esa representación a través de la red.

+0

guau, guay, buena explicación ... ¡Gracias! – KItis

Cuestiones relacionadas