Qual è la differenza tra REST & RESTful

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.

Il trasferimento dello stato di rappresentazione (REST) è uno stile dell’architettura software. Come descritto in una tesi di Roy Fielding, REST è uno “stile architettonico” che sostanzialmente sfrutta la tecnologia e i protocolli esistenti del Web.

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

“REST” è un paradigma architettonico. “RESTful” descrive usando quel paradigma.

Servizi / architettura basati su REST VC RESTFUL Servizi / Architettura

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

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

  • Dovrebbe essere apolide

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

  • Non ha crittografia incorporata

  • Non ha sessione

  • Usa uno e un solo protocollo che è HTTP

  • Per eseguire operazioni CRUD, dovrebbe utilizzare verbi HTTP come get, post, put ed delete

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

REST based services seguono alcuni dei principi sopra menzionati e non tutti

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

È simile al concetto di:

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

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


Esempio :

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

MVC supporta solo alcuni dei principi REST sopra menzionati, mentre le API WEB supportano tutti i principi REST di cui sopra.

MVC supporta solo quanto segue dall’API REST

  • Possiamo accedere alla risorsa usando l’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 stato

  • Possiamo restituire il video o l’immagine dal metodo di azione del controller che sostanzialmente viola i principi REST

Questo è il motivo per cui MVC è REST-Based mentre l’API WEB supporta tutti i suddetti principi ed è RESTFul .

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

REST sta per trasferimento di stato rappresentazionale. Ciò significa che lo stato stesso non viene trasferito, ma una semplice rappresentazione di esso è. L’esempio più comune è un’app basata esclusivamente su server HTML (non javascript). Il browser non sa nulla dell’applicazione stessa ma attraverso collegamenti e risorse, il server è in grado di trasferire lo stato dell’applicazione al browser. Dove normalmente un pulsante cambia una variabile di stato (ad esempio la pagina aperta) in una normale applicazione di Windows, nel browser è presente un collegamento che rappresenta tale cambiamento di stato.

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

Questa è la mia versione breve di ciò che REST rappresenta, il problema è che è difficile da implementare. Dico personalmente RESTful, quando voglio fare riferimento ai principi REST, ma so che non sto davvero implementando l’intero concetto di REST. Non lo diciamo in realtà, perché si utilizza SOAP o no. Penso che la maggior parte delle persone non faccia REST come è stato immaginato dal suo creatore Roy Fielding, in realtà implementiamo architetture RESTful o RESTlike. Puoi vedere la sua tesi e troverai l’acronimo REST ma non la parola RESTful.

REST è uno stile di architettura software per software distribuito

La conformità ai vincoli REST viene definita “RESTful”.

Molto usato oggi per build servizi web come alternativa a SOAP.

Qui hai alcuni link da controllare

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

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. Utilizzare i metodi HTTP in modo esplicito.
  2. Essere apolidi.
  3. Esporre gli URI di struttura di directory.
  4. Trasferisci XML, JavaScript Object Notation (JSON) o entrambi.

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

I servizi Web sono essenzialmente siti Web il cui contenuto viene utilizzato 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 tutto il materiale che le persone possono già ottenere dal Web. REST è spesso in contrasto con i servizi Web SOAP e altri servizi Web “remote procedure call”.

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

Per un libro, non si può ottenere niente di meglio di Restful Web Services di Richardson e Ruby.

Un servizio basato su REST è chiamato “servizio RESTful”.

Sorgo di fare affidamento sul post che: Dr.Dobbs Archive

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

  • livello 0: qualsiasi sistema che abbia un singolo endpoint per tutte le sue apis (SOAP o RPC rientrano in questa categoria). Le apis di livello 0 possono anche somigliare ai “comandi”.

  • livello 1: un sistema descritto da ResourceUri. Questo è un sistema che definisce più URI basati sull’ quadro (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: alias livello 1 w / un uso conforms di metodi standard HTTP / verbi e risposte multi codice di stato

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

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

Quindi sostanzialmente tutti gli apis RESTful sono apis REST, ma non tutti gli apis REST sono RESTful

definizione del modello di maturità di Richardson

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 RESTful in rete .

Vale la pena notare che ci sono diversi 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 gerarchiche (ad esempio /things/ID/relatedthings ) rispetto a URL flat (ad esempio /things/ID e /relatedthings?thing=ID )