Che cos'è REST (in inglese semplice) [chiuso]


84

Ultimamente mi sono interessato a familiarizzare con REST. Ho provato a leggere la voce wiki su REST , ma non è stato di alcun aiuto. Lo apprezzerei davvero se qualcuno potesse spiegare in un inglese semplice (cioè senza un gergo tecnologico non necessario )

  1. Cos'è REST
  2. Quale posizione occupa nell'ecosistema dell'architettura web
  3. Quanto strettamente (o vagamente) è accoppiato al protocollo.
  4. Quali sono le alternative a REST e come si confronta REST con loro.

Capisco che potrebbe non essere possibile rispondere a questa in uno o due paragrafi, in tal caso i collegamenti pertinenti saranno molto apprezzati.



Trovo che questo sia informativo, ma non troppo dettagliato: ibm.com/developerworks/webservices/library/ws-restful
NoChance

Mi chiedo se questa domanda possa essere considerata una risposta?
Gary Rowe,

@GaryRowe Avevo segnato una risposta, suppongo che sia stata rimossa per qualche motivo. Non capisco questo sito.
Gaurav

1
Nessuna delle risposte di seguito usa la parola "idempotente". Dovresti cercare: l'idempotenza è un aspetto importante di qualsiasi architettura RESTful.
Solomon Slow

Risposte:


10

Che cos'è REST (in inglese semplice)

Inglese semplice:

Rappresentanza: l'azione di parlare o agire per conto di qualcuno.
Trasferimento di stato: stato del trasferimento.


Tecnico:

  • non trasferiamo un oggetto reale ma una sua rappresentazione in una forma (es. un file xml / json / text per rappresentare una tabella di database).
  • REST per aver esposto un'API pubblica su Internet per gestire le operazioni CRUD sui dati. REST si concentra sull'accesso alle risorse denominate attraverso un'unica interfaccia coerente.
  • REST viene rappresentato tramite un tipo di supporto. Alcuni esempi di tipi di media includono XML, JSON e RDF.
  • REST è uno stile architettonico per l'architettura orientata alle risorse (ROA) , non una specifica o uno standard.
  • Lo stile architettonico significa che è un concetto, una teoria (e come viene implementato, dipende da te)
  • Tutto è identificato da un endpoint unico. cioè C'è un endpoint per ogni risorsa (dati).
  • L'endpoint è costituito da un nome di dominio con indirizzo di risorsa.

REST vs SOAP


43

Che cos'è REST?

Trasferimento di stato rappresentativo. Descrive come un sistema può comunicare lo stato con un altro. Un esempio potrebbe essere lo stato di un prodotto (nome, descrizione, ecc.) Rappresentato come XML, JSON o testo semplice. L'idea generalizzata di stato è definita una risorsa.

Che posizione occupa in un ecosistema di architettura web?

REST è comunemente associato all'interfaccia dei servizi Web poiché HTTP è di gran lunga il protocollo di operatore più comune. Nel modello a 7 livelli esiste a livello di applicazione . Tuttavia, vedere la sezione successiva.

Quanto strettamente (o liberamente) è accoppiato al protocollo?

REST non è HTTP. Utilizza HTTP perché nella sua forma più generale REST esiste per aiutare una macchina a mappare il concetto di verbo rispetto a una raccolta arbitraria di nomi. HTTP contiene un utile set di verbi generici (GET, PUT, PATCH ecc.) Che possono essere applicati a nomi arbitrari espressi come URI utilizzando HTTP, ad esempio GET http://example.org/Product(54 ).

Quali sono le alternative a REST e come si confronta REST con loro

Questo è simile a chiedere "Quanto RESTful è il mio approccio?" Utilizzare il seguente elenco (riassunto dal modello di maturità Richardson come descritto da Martin Fowler ):

Livello 0 - La palude del POX

Usa POST per tutto (legge, scrive, cancella). Questo è SOAP, POX, RPI ecc. Stai solo usando HTTP come tunnel per il tuo protocollo. Il target è un singolo endpoint che fa tutto in base al contenuto del corpo della richiesta.

Livello 1 - Risorse

Usa POST per tutto. Indirizzare più endpoint progettati per fornire informazioni su una cosa particolare. Hai appena scoperto risorse.

Livello 2 - Verbi HTTP

Usa i verbi HTTP contro le risorse. Ora lo stai ottenendo. POST è creare, PUT è sovrascrivere, OPZIONI per le operazioni disponibili, ELIMINA per, bene, eliminare la risorsa. Come risultato dell'uso di questi verbi, diversi codici di stato HTTP iniziano a diventare più rilevanti (202 ACCETTATO qualcuno?).

Livello 3 - Controllo hypermedia ( HATEOAS )

A questo punto fai il salto finale e introduci l'ipermedia come meccanismo di controllo del flusso. Un client REST non ha bisogno di conoscenze preliminari su come interagire con una particolare applicazione o server oltre una comprensione generica dell'ipermedia. Questo può essere comunicato in HTTP tramite il campo di intestazione Content-Type. I formati di testo includono AtomPub e (più conciso) HAL , mentre HyperAudio funziona bene per i flussi audio (vedi SoundCloud et al)


tu dici "REST non è HTTP", ma Roy Fielding sembra piuttosto fissato sull'idea che l' ipertesto è un requisito, cosa con l'intero affare di HATEOAS senza il quale - secondo lui - non stai facendo un REST "corretto". Mentre ipertesto! = HTTP, mi chiedo quanto puoi effettivamente fare al di fuori di HTTP ...
Andres F.

Secondo questo ( roy.gbiv.com/untangled/2008/… ) Roy Fielding sottolinea che l'ipertesto, o il suo sottoinsieme, hypermedia, può essere espresso al di fuori dell'HTML purché supporti collegamenti di qualche tipo.
Gary Rowe,

3
HTTP funziona bene con REST perché offre verbi standardizzati per lavorare con URI che rappresentano nomi in REST in un protocollo senza stato. Ideale. Tuttavia, nella sua tesi di laurea ( ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm ) osserva che "REST non limita la comunicazione a un determinato protocollo, ma limita l'interfaccia tra i componenti, e quindi l'ambito di ipotesi di interazione e implementazione che potrebbero altrimenti essere fatte tra i componenti. " Pertanto è improbabile che un'implementazione FTP completa sia RESTful senza la gestione dello stato sul lato client.
Gary Rowe,

2
+1 per il collegamento Martin Fowler. Come al solito Martin Fowler ha scritto un articolo che descrive un concetto nel modo più chiaro e conciso possibile
Tom Carter,

hai coperto state transfernon la rappresentazione. l'azione di parlare o agire per conto di qualcuno è la rappresentazione di come funziona in questo contesto?
Premraj,

11

Mentre REST è un'abbreviazione di Rappresentational State Transfer, può essere più semplice considerare l'idea di eseguire varie azioni attraverso un'interfaccia in qualche modo intuitiva.

Ad esempio, un URL come http://www.mysite.com/FindProduct/125/ potrebbe essere interpretato come qualcuno che desidera informazioni sul prodotto con un ID di 125.

Mentre REST è di solito pensato in termini di HTTP, il concetto potrebbe essere applicato ad altri protocolli come indicato nel riferimento di Wikipedia.

Altri esempi di REST che potrebbero essere utili:


2
Grazie per il link a "Learn REST: A Tutorial"! Questo è il primo tutorial che ho letto che mi lascia con la sensazione di aver imparato qualcosa di concreto. Tutto il resto che ho letto (incluso l'articolo di Wikipedia) descrive REST solo nei modi più astratti, circondato da un gergo tecnico.
Avian00,

il primo collegamento non funziona. La tua risposta è comunque utile !!
Entusiasta l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.