Qual è la differenza tra REST e RESTful


540

Qual è la differenza tra un sistema REST e un sistema RESTful?

Da alcune cose che ho letto la maggior parte dei cosiddetti servizi REST sono in realtà servizi RESTful. Quindi qual è la differenza tra i due.


3
Il motivo della domanda è perché se leggi l'articolo nel link e cerchi cosa pensa Dr Fielding della maggior parte delle implementazioni REST, non sono affatto sistemi REST. Esibiscono comportamenti RESTful ma non possono essere classificati come sistemi REST.
AwkwardCoder

4
Ho letto l'articolo ma non credo che lo abbia portato a distinzioni semanticamente inutili.
JasonTrue,

3
Articolo di Wikipedia su REST - en.wikipedia.org/wiki/Representational_State_Transfer - secondo paragrafo - "La conformità ai vincoli REST è spesso definita" RESTful "."
Nate,

1
@PramodNikumbh ha risposto correttamente di seguito. Un sistema "REST" è un sistema che si adatta a una definizione più ampia di REST. Presenta almeno alcuni principi di riposo. "Restful" descrive un sistema molto più conforme a REST.
Andrew Norman,

Bene, penso che ci sia una confusione nel nome, il "ful" in RESTful confonderà apolide e stateful e quelle sono due cose diverse, REST e RESTful secondo la mia opinione personale, devono essere SENZA FINE. immagina un REST con stato chiamato RESTles. :)
Waheed

Risposte:


487

Il trasferimento di stato rappresentativo (REST) è uno stile di architettura software. Come descritto in una tesi di Roy Fielding, REST è uno "stile architettonico" che sfrutta sostanzialmente la tecnologia e i protocolli esistenti sul Web.

RESTful viene in genere utilizzato per fare riferimento a servizi Web che implementano tale architettura.


146
Quindi REST è l'architettura e RESTful un aggettivo?
manei_cc,

4
@manei_cc: anche se in pratica ciò che troverai sono servizi chiamati RESTful che non seguono l'architettura REST e sono sostanzialmente simili a REST, aspiranti REST ecc. Quindi fai sempre attenzione che un "servizio RESTful" non sia necessariamente costruito usando REST architettura, ma vero come ha scritto Justin Ethier: sfrutta la tecnologia e i protocolli esistenti del Web .
Azder,

7
RESTful dovrebbe essere usato per le API che rispettano davvero REST. Ho visto troppi servizi Web "REST" che utilizzavano solo GET o POST. RESTful accentua l'uso completo dei verbi HTTP e le convenzioni di denominazione degli URL. Ma è il mio punto di vista.
Martin,

1
architectdi cosa? di url? come https://translation.googleapis.com/language/translate/v2questo è lo stile REST?
Asif Mushtaq,

1
stackoverflow.com/users/3807248/pramod-nikumbh ha risposto correttamente di seguito
Andrew Norman,

194

Servizi / architettura basati su REST vs. Servizi / architettura RESTFUL

Per differenziare o confrontare questi 2, dovresti sapere cos'è REST .

REST ( RE presentation S tate T ransfer) è fondamentalmente uno stile architettonico di sviluppo con alcuni principi:

  • Dovrebbe essere apolide

  • Dovrebbe accedere a tutte le risorse dal server usando solo l'URI

  • Non ha la crittografia integrata

  • Non ha sessione

  • Utilizza uno e un solo protocollo: HTTP

  • Per eseguire operazioni CRUD, dovrebbe utilizzare HTTP verbi quali get, post, putedelete

  • Dovrebbe restituire il risultato solo sotto forma di JSON o XML, atom, OData ecc. (Dati leggeri)

REST based services seguire alcuni dei principi di cui sopra e non tutti

RESTFUL services significa che segue tutti i principi di cui sopra.

È simile al concetto di:

Object-based languagessupporta tutti i concetti di OOP, esempi : C ++, C #

Object oriented languagessupporta alcune delle funzionalità di OOP, esempi : JavaScript, VB


Esempio :

ASP Dot NET MVC 4 è REST-Basedmentre Microsoft WEB API è RESTFul.

MVC supporta solo alcuni dei principi REST di cui sopra mentre l'API WEB supporta tutti i principi REST di cui sopra.

MVC supporta solo quanto segue dall'API REST

  • Possiamo accedere alla risorsa tramite URI

  • Supporta il verbo HTTP per accedere alla risorsa dal server

  • Può restituire i risultati sotto forma di JSON, XML, ovvero HTTPResponse.

Tuttavia, allo stesso tempo in MVC

  • Possiamo usare la sessione

  • Possiamo renderlo con stato

  • Siamo in grado di restituire video o immagini dal metodo di azione del controller che viola sostanzialmente i principi REST

Questo è il motivo per cui MVC è REST-Basedconsiderando che l'API WEB supporta tutti i principi di cui sopra ed è RESTFul.


10
Non capisco perché questo sia stato sottoposto a downgrade, questa risposta porta molte informazioni chiarificatrici alla domanda.
Marcovecchio,

5
migliore risposta finora
Limon

2
Questa è la risposta migliore.
Mário Meyrelles,

2
puoi usare FTP con REST. si veda: stackoverflow.com/questions/35534812/...
crazyTech

7
Le lingue nelle categorie "Basato sugli oggetti" e "Orientato agli oggetti" sopra sono invertite. I linguaggi orientati agli oggetti seguono tutti i principi OOPS, mentre quelli basati sugli oggetti ne seguono alcuni.
Mrchief,

119

"REST" è un paradigma architettonico. "RESTful" descrive l'uso di quel paradigma.


architectdi cosa? di url? come https://translation.googleapis.com/language/translate/v2questo è lo stile REST?
Asif Mushtaq,

2
Un'architettura REST richiede molti tratti. Non puoi dire che qualcosa aderisce ai principi REST semplicemente mostrando un URL.
SingleShot

42

Come ha detto Jason nei commenti, RESTful è solo usato come aggettivo che descrive qualcosa che rispetta i vincoli REST.


29

REST sta per trasferimento di stato rappresentativo. Ciò significa che lo stato stesso non viene trasferito, ma una semplice rappresentazione di esso lo è. L'esempio più comune è un'app basata su puro server HTML (senza javascript). Il browser non sa nulla dell'applicazione stessa, ma tramite collegamenti e risorse, il server è in grado di trasferire lo stato dell'applicazione al browser. Laddove un pulsante cambierebbe normalmente una variabile di stato (ad es. Pagina aperta) in una normale applicazione Windows, nel browser è presente un collegamento che rappresenta tale cambiamento di stato.

L'idea è di usare l'ipermedia. E forse per creare nuovi tipi ipermediali. Potenzialmente possiamo espandere il browser con javascript / AJAX e creare nuovi tipi di hypermedia personalizzati. E avremmo una vera applicazione REST.

Questa è la mia versione breve di ciò che REST rappresenta, il problema è che è difficile da implementare. Personalmente dico RESTful, quando voglio fare riferimento ai principi REST, ma so che non sto davvero implementando l'intero concetto di REST. Non diciamo davvero SOAPful, perché o usi SOAP o no. Penso che la maggior parte delle persone non esegua il REST nel modo in cui è stato immaginato dal suo creatore Roy Fielding, in realtà implementiamo architetture RESTful o RESTlike. Puoi vedere la sua tesi di laurea e troverai l'acronimo REST ma non la parola RESTful.



13

grazie per le risposte. Leggi questo articolo di Alex Rodriguez che suggerisce che un servizio web RESTful ha 4 caratteristiche di base che sono:

  1. Usa esplicitamente i metodi HTTP.
  2. Sii apolide.
  3. Esporre gli URI simili a strutture di directory.
  4. Trasferisci XML, JavaScript Object Notation (JSON) o entrambi.

In realtà ha 6 vincoli.
IronBlossom,

2
@IronBlossom Care per aggiornare la risposta con i due mancanti?
Paul Fleming,

1
link dead, il nuovo URL sembra essere IBM - RESTful Web services
dthal

10

Representational State Transfer (REST) ​​è uno stile di architettura software per sistemi ipermediali distribuiti come il World Wide Web. Il termine Rappresentational State Transfer è stato introdotto e definito nel 2000 da Roy Fielding 1 [2] nella sua tesi di dottorato. Fielding è uno dei principali autori delle versioni delle specifiche Hypertext Transfer Protocol (HTTP) 1.0 e 1.1. La conformità ai vincoli REST viene definita "RESTful". Fonte: Wikipedia


8

I servizi Web sono essenzialmente siti Web il cui contenuto è consumato da programmi per computer, non da persone. REST è un insieme di principi architetturali che stabiliscono che i servizi Web dovrebbero sfruttare al massimo HTTP e altri standard Web, in modo che i programmi ottengano tutte le cose buone che le persone già possono uscire dal web. REST è spesso in contrasto con i servizi web SOAP e altri servizi web orientati alla "chiamata di procedura remota".

Le presentazioni di Stefan Tilkov su REST su Parleys.com sono abbastanza buone, specialmente questa .

Per un libro, non puoi trovare di meglio dei Restful Web Services di Richardson e Ruby .


Quindi un sito Web normale può essere considerato un'applicazione REST?
yoyo_fun

1
@yoyo_fun: Sì, un sito Web normale può essere costruito anche RESTfully. Ad un certo livello di astrazione, non importa se il server restituisce HTML a un essere umano o JSON (diciamo) a un programma.
Jim Ferrans,


4

Esistono 4 livelli di API definiti nel modello di maturità Richardson. Questi sono definiti come:

  • livello 0: qualsiasi sistema che ha un unico endpoint per tutte le sue API (SOAP o RPC rientrano in questa categoria). Le API di livello 0 possono anche assomigliare a "comandi".

  • livello 1: un sistema descritto da ResourceUri. Questo è un sistema che definisce più URI basati su entità (invece di avere un singolo endpoint come farebbe un sistema di livello 0). Questi URI possono utilizzare diverse azioni http (POST, GET, PUT, ecc.) Per implementare diverse azioni contro quella risorsa.

  • livello 2: aka livello 1 con un uso conforme dei metodi / verbi HTTP standard e risposte con codice multi stato

  • livello 3: aka livello 2 più HATEOAS (hypermedia incluso nella risposta che descrive le chiamate aggiuntive che è possibile effettuare)

Mentre i livelli 1, livello 2 e livello 3 possono essere considerati come sistemi REST, solo i livelli più severi (ovvero livello 2 e livello 3) sono considerati RESTful.

Quindi essenzialmente tutte le API RESTful sono API REST, ma non tutte le API REST sono RESTful

definizione del modello di maturità di Richardson


2

Pensa a REST come a una "classe" architettonica mentre RESTful è la "istanza" ben nota di quella classe.

Si prega di tenere presente il ""; non abbiamo a che fare con oggetti di programmazione "reali" qui.


1

Un "servizio REST" e un "servizio RESTful" sono la stessa cosa.

Un sistema RESTful è qualsiasi sistema che segue le convenzioni REST come definito nel documento originale che ha creato l'idea delle applicazioni in rete RESTful .

Vale la pena notare che ci sono vari livelli di RESTfulness. Nel complesso, REST è uno stile, non uno standard, quindi c'è spazio per l'interpretazione in base alle esigenze. un esempio sono gli URL di risorse gerarchici (ad es. /things/ID/relatedthings) vs URL piatti (ad es. /things/IDe /relatedthings?thing=ID)


1

REST (REpresentation State Transfer) è un'architettura che utilizza i WebServices.

e

RESTful è un modo di scrivere servizi usando le architetture REST. I servizi RESTful espongono le risorse per identificare gli obiettivi per interagire con i clienti.


0

REST è un modello architettonico per la creazione di servizi Web. Un servizio RESTful è uno che implementa quel modello.

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.