Qual é a diferença entre REST e RESTful

540

Qual é a diferença entre um sistema REST e um sistema que é RESTful?

De algumas coisas que li , os chamados serviços REST são na verdade serviços RESTful. Então qual é a diferença entre os dois.

AwkwardCoder
fonte
3
O motivo da pergunta é porque, se você ler o artigo no link e procurar o que o Dr. Fielding pensa sobre a maioria das implementações REST, elas não são sistemas REST. Eles exibem comportamento RESTful, mas não podem ser classificados como sistemas REST.
AwkwardCoder 14/10/2009
4
Li o artigo, mas acho que não o levou a tais distinções semanticamente inúteis.
21310 JasonTrue
3
Artigo da Wikipedia sobre REST - en.wikipedia.org/wiki/Representational_State_Transfer - segundo parágrafo - "A conformidade com as restrições REST é frequentemente referida como 'RESTful'."
Nate
1
@PramodNikumbh respondeu isto corretamente abaixo. Um sistema "REST" é um sistema que se encaixa em uma definição mais ampla de REST. Exibe pelo menos alguns princípios de descanso. "Restful" descreve um sistema muito mais compatível com REST.
Andrew Norman
Bem, acho que há uma confusão no nome, o "completo" no RESTful confundirá apátrida e com estado e essas são duas coisas diferentes, REST e RESTful na minha opinião pessoal, devem ser INTEIRAS. imagine um REST com estado chamado RESTles. :)
Waheed

Respostas:

487

Representational state transfer (REST) é um estilo de arquitetura de software. Conforme descrito em uma dissertação de Roy Fielding, o REST é um "estilo arquitetônico" que explora basicamente a tecnologia e os protocolos existentes na Web.

RESTful é normalmente usado para se referir a serviços da Web que implementam essa arquitetura.

Justin Ethier
fonte
146
Então REST é a arquitetura e RESTful um adjetivo?
2131414 manei_cc
4
@manei_cc: Embora, na prática, você encontre serviços denominados RESTful que não seguem a arquitetura REST e sejam basicamente semelhantes a REST, wannabies REST etc. Portanto, sempre preste atenção que um "serviço RESTful" não é necessariamente construído usando REST arquitetura, mas verdadeira como Justin Ethier escreveu: explora a tecnologia e os protocolos existentes da Web .
Azder
7
RESTful deve ser usado para APIs que realmente respeitam o REST. Vi muitos serviços web "REST" que usavam apenas GET ou POST. RESTful enfatiza o uso completo de verbos HTTP e convenções de nomenclatura de URL. Mas é o meu ponto de vista.
Martin
1
architectsobre o que? de URLs? como https://translation.googleapis.com/language/translate/v2esse é o estilo REST?
Asif Mushtaq 07/07
1
stackoverflow.com/users/3807248/pramod-nikumbh respondeu isto corretamente abaixo
Andrew Norman
194

Serviços baseados em REST / Arquitetura vs. Serviços RESTFUL / Arquitetura

Para diferenciar ou comparar esses 2, você deve saber o que é REST .

RESTO ( RE apresentação S tate T ransferência) é basicamente um estilo de arquitetura de desenvolvimento tendo alguns princípios:

  • Deve ser apátrida

  • Ele deve acessar todos os recursos do servidor usando apenas URI

  • Não possui criptografia embutida

  • Não tem sessão

  • Ele usa um e apenas um protocolo - HTTP

  • Para executar operações CRUD, ele deve usar HTTP verbos tais como get, post, putedelete

  • Ele deve retornar o resultado apenas na forma de JSON ou XML, atom, OData etc. (dados leves)

REST based services siga alguns dos princípios acima e nem todos

RESTFUL services significa que segue todos os princípios acima.

É semelhante ao conceito de:

Object-based languagessuporta todos os conceitos de OOPs, exemplos : C ++, C #

Object oriented languagessuporta alguns dos recursos de OOPs, exemplos : JavaScript, VB


Exemplo :

O ASP Dot NET MVC 4 está REST-Basedenquanto a Microsoft WEB API está RESTFul.

O MVC suporta apenas alguns dos princípios REST acima, enquanto a API WEB suporta todos os princípios REST acima.

O MVC suporta apenas o seguinte na API REST

  • Podemos acessar o recurso usando URI

  • Ele suporta o verbo HTTP para acessar o recurso do servidor

  • Ele pode retornar os resultados no formato JSON, XML, que é o HTTPResponse.

No entanto, ao mesmo tempo no MVC

  • Nós podemos usar a sessão

  • Podemos torná-lo estável

  • Podemos retornar vídeo ou imagem do método de ação do controlador, que basicamente viola os princípios REST

É por isso que o MVC é REST-Basedque a WEB API suporta todos os princípios acima RESTFul.

Pramod Nikumbh
fonte
10
Não entendo por que isso foi rebaixado, essa resposta traz muitas informações esclarecedoras para a pergunta.
Marcovecchio
5
melhor resposta até agora
Limon
2
Esta é a melhor resposta.
Mário Meyrelles 8/16
2
você pode usar FTP com REST. Por favor, veja: stackoverflow.com/questions/35534812/…
crazyTech
7
Os idiomas nas categorias "Baseado em objeto" e "Orientado a objeto" acima são revertidos. As linguagens orientadas a objetos seguem todos os princípios OOPS, enquanto as baseadas em objetos seguem alguns.
precisa saber é o seguinte
119

"REST" é um paradigma arquitetônico. "RESTful" descreve o uso desse paradigma.

Tiro único
fonte
architectsobre o que? de URLs? como https://translation.googleapis.com/language/translate/v2esse é o estilo REST?
Asif Mushtaq 07/07
2
Uma arquitetura REST requer muitos traços. Você não pode dizer que algo segue os princípios REST apenas mostrando um URL.
SingleShot
42

Como Jason disse nos comentários, o RESTful é usado apenas como um adjetivo que descreve algo que respeita as restrições do REST.

Darrel Miller
fonte
29

REST significa transferência de estado representacional. Isso significa que o próprio estado não é transferido, mas uma mera representação dele. O exemplo mais comum é um aplicativo baseado em servidor HTML puro (sem javascript). O navegador não sabe nada sobre o aplicativo em si, mas através de links e recursos, o servidor pode transferir o estado do aplicativo para o navegador. Onde um botão normalmente altera uma variável de estado (por exemplo, página aberta) em um aplicativo normal do Windows, no navegador você tem um link que representa essa alteração de estado.

A idéia é usar a hipermídia. E talvez para criar novos tipos de hipermídia. Potencialmente, podemos expandir o navegador com javascript / AJAX e criar novos tipos de hipermídia personalizados. E teríamos uma aplicação REST verdadeira.

Esta é minha versão curta do que o REST representa, o problema é que é difícil de implementar. Pessoalmente, digo RESTful, quando quero fazer referência aos princípios REST, mas sei que não estou realmente implementando todo o conceito de REST. Na verdade, não dizemos SOAPful, porque você usa SOAP ou não. Acho que a maioria das pessoas não faz o REST da maneira que foi concebida por seu criador, Roy Fielding, na verdade implementamos arquiteturas RESTful ou RESTlike. Você pode ver a dissertação e encontrará a sigla REST, mas não a palavra RESTful.

Arturo Hernandez
fonte
23

REST é um estilo de arquitetura de software para software distribuído

A conformidade com as restrições REST é chamada de 'RESTful'.

Muito usado hoje em dia para criar serviços da Web como uma alternativa ao SOAP.

Aqui você tem alguns links para verificar

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/

Claudio Redi
fonte
13

obrigado pelas respostas. Leia este artigo de Alex Rodriguez, que sugere que um serviço da web RESTful possui 4 características básicas, que são:

  1. Use métodos HTTP explicitamente.
  2. Seja apátrida.
  3. Expor URIs semelhantes à estrutura de diretórios.
  4. Transfira XML, JavaScript Object Notation (JSON) ou ambos.
Kumait
fonte
Na verdade, existem 6 restrições.
IronBlossom 28/09
2
@IronBlossom Care para atualizar a resposta com os dois desaparecidos?
Paul Fleming
1
link morto, novo URL parece ser IBM - serviços Web RESTful
dthal
10

Representational State Transfer (REST) ​​é um estilo de arquitetura de software para sistemas hipermídia distribuídos, como a World Wide Web. O termo Representational State Transfer foi introduzido e definido em 2000 por Roy Fielding 1 [2] em sua tese de doutorado. Fielding é um dos principais autores das versões 1.0 e 1.1 da especificação Hypertext Transfer Protocol (HTTP). A conformidade com as restrições REST é chamada de 'RESTful'. Fonte: Wikipedia

Andersson Melo
fonte
8

Serviços da Web são essencialmente sites cujo conteúdo é consumido por programas de computador, não por pessoas. O REST é um conjunto de princípios arquiteturais que estipulam que os serviços da Web devem aproveitar ao máximo o HTTP e outros padrões da Web, para que os programas obtenham todas as coisas boas que as pessoas já podem obter da Web. O REST geralmente é contrastado com os serviços web SOAP e outros serviços web orientados à "chamada de procedimento remoto".

As apresentações de Stefan Tilkov no REST no Parleys.com são muito boas, especialmente esta .

Para um livro, você não pode ter nada melhor do que os Restful Web Services de Richardson e Ruby .

Jim Ferrans
fonte
Assim, um site regular pode ser considerado um aplicativo REST?
precisa saber é o seguinte
1
@yoyo_fun: Sim, um site regular também pode ser construído com RESTfully. Em algum nível de abstração, se o servidor retorna HTML para um ser humano ou JSON (por exemplo) para um programa é irrelevante.
Jim Ferrans
5

Um serviço baseado em REST é chamado de "serviço RESTful".

Fonte Eu confio em postar isso: Dr.Dobbs Archive

nickolay
fonte
4

Existem 4 níveis de API definidos no Richardson Maturity Model. Eles são definidos como:

  • nível 0: qualquer sistema que tenha um único ponto de extremidade para todas as suas APIs (SOAP ou RPC se enquadram nessa categoria). As APIs de nível 0 também podem se parecer com "comandos".

  • nível 1: um sistema descrito pelo ResourceUri. Este é um sistema que define vários URIs baseados em entidades (em vez de ter um único terminal como um sistema de nível 0). Esses URIs podem usar ações http diferentes (POST, GET, PUT etc.) para implementar ações diferentes nesse recurso.

  • nível 2: também conhecido como nível 1, com uso compatível dos métodos / verbos HTTP padrão e respostas com códigos de status múltiplos

  • nível 3: também conhecido como nível 2 mais HATEOAS (hipermídia incluída na resposta que descreve chamadas adicionais que você pode fazer)

Embora os níveis 1, 2 e 3 possam ser considerados sistemas REST, apenas os níveis mais rígidos (também conhecidos como nível 2 e nível 3) são considerados RESTful.

Portanto, essencialmente todas as APIs RESTful são APIs REST, mas nem todas as APIs RESTful são RESTful

definição do modelo de maturidade de Richardson

Andrew Norman
fonte
2

Pense no REST como uma "classe" arquitetônica, enquanto RESTful é a "instância" bem conhecida dessa classe.

Por favor, observe o ""; não estamos lidando com objetos de programação "reais" aqui.

Pat
fonte
1

Um "serviço REST" e um "serviço RESTful" são iguais.

Um sistema RESTful é qualquer sistema que segue as convenções REST, conforme definido no documento original, que criou a idéia de aplicativos em rede RESTful .

Vale a pena notar que existem vários níveis de RESTfulness. No geral, o REST é um estilo, não um padrão, portanto, há espaço para interpretação com base nas necessidades. um exemplo são os URLs de recursos hierárquicos (por exemplo /things/ID/relatedthings) vs URLs simples (por exemplo, /things/IDe /relatedthings?thing=ID)

Brenden
fonte
1

REST (REpresentation State Transfer) é uma arquitetura que utiliza os WebServices.

e

RESTful é uma maneira de escrever serviços usando as arquiteturas REST. Os serviços RESTful expõem os recursos para identificar os destinos para interagir com os clientes.

Manas
fonte
0

REST é um padrão de arquitetura para criar serviços da web. Um serviço RESTful é aquele que implementa esse padrão.

sajadre
fonte