O que é REST (em inglês simples) [fechado]

84

Ultimamente, tenho me interessado em me familiarizar com o REST. Tentei ler a entrada do wiki no REST , mas não ajudou em nada. Eu realmente aprecio isso se alguém puder explicar em inglês simples (isto é, sem jargão técnico desnecessário )

  1. O que é REST
  2. Que posição ocupa no ecossistema de arquitetura da web
  3. Quão firmemente (ou frouxamente) é acoplado ao protocolo.
  4. Quais são as alternativas para o REST e como o REST se compara a elas.

Entendo que talvez não seja possível responder a isso em um ou dois parágrafos; nesse caso, os links relevantes serão muito apreciados.

Gaurav
fonte
6
Tente isso - tomayko.com/writings/rest-to-my-wife
talonx
Eu acho que isso seja informativa, ainda não muito detalhada: ibm.com/developerworks/webservices/library/ws-restful
NoChance
Gostaria de saber se essas perguntas podem ser consideradas respondidas.
Gary Rowe
@ GaryRowe Eu tinha marcado uma resposta, acho que foi removida por algum motivo. Eu não entendo este site.
Gaurav
11
Nenhuma das respostas abaixo usa a palavra "idempotente". Você deve procurar: a idempotência é um aspecto importante de qualquer arquitetura RESTful.
Solomon Slow

Respostas:

10

O que é REST (em inglês simples)

Inglês simples:

REpresentational: a ação de falar ou agir em nome de alguém.
Transferência de estado: status da transferência.


Técnico:

  • não transferimos um objeto real, mas uma representação dele em um formulário (por exemplo, um xml / json / text para representar uma tabela do banco de dados).
  • RESTs para expor uma API pública pela Internet para manipular operações CRUD nos dados. O REST está focado no acesso aos recursos nomeados por meio de uma única interface consistente.
  • O REST é representa através de algum tipo de mídia. Alguns exemplos de tipos de mídia incluem XML, JSON e RDF.
  • REST é um estilo de arquitetura para arquitetura orientada a recursos (ROA) , não uma especificação ou um padrão.
  • Estilo arquitetônico significa que é um conceito, teoria (e como é implementado, depende de você)
  • Tudo é identificado por um terminal exclusivo. ou seja, existe um ponto final para cada recurso (dados).
  • O ponto final é composto pelo nome do domínio com o endereço do recurso.

REST vs SOAP

Premraj
fonte
43

O que é REST?

REpresentational State Transfer. Ele descreve como um sistema pode se comunicar com outro. Um exemplo seria o estado de um produto (nome, descrição, etc.) representado como XML, JSON ou texto sem formatação. A idéia generalizada de estado é denominada recurso.

Que posição ocupa em um ecossistema de arquitetura da web?

O REST é comumente associado à interface de serviços da web, já que o HTTP é de longe o protocolo de operadora mais comum. No modelo de 7 camadas, ele existe na camada de aplicativo . No entanto, consulte a próxima seção.

Quão firmemente (ou frouxamente) é acoplado ao protocolo?

REST não é HTTP. Ele usa HTTP porque, na sua forma mais geral, o REST existe para ajudar uma máquina a mapear o conceito de um verbo contra uma coleção arbitrária de substantivos. O HTTP contém um conjunto útil de verbos genéricos (GET, PUT, PATCH etc.) que podem ser aplicados a substantivos arbitrários expressos como URIs usando HTTP, por exemplo, GET http://example.org/Product(54 ).

Quais são as alternativas ao REST e como o REST se compara a elas

Isso é semelhante a perguntar "Qual é a minha abordagem de RESTful?" Use a seguinte lista (resumida no Richardson Maturity Model, conforme descrito por Martin Fowler ):

Nível 0 - O pântano de POX

Use POST para tudo (lê, grava, exclui). Isso é SOAP, POX, RPI, etc. Você está apenas usando HTTP como um túnel para seu próprio protocolo. Você direciona um único terminal que faz tudo com base no conteúdo do corpo da solicitação.

Nível 1 - Recursos

Use o POST para tudo. Segmente vários pontos de extremidade projetados para fornecer informações sobre uma coisa específica. Você acabou de descobrir recursos.

Nível 2 - verbos HTTP

Use verbos HTTP contra recursos. Agora você está conseguindo. POST é criar, PUT é sobrescrever, OPTIONS para operações disponíveis, DELETE para, bem, excluir o recurso. Como resultado do uso desses verbos, diferentes códigos de status HTTP começam a se tornar mais relevantes (202 ACEITO ALGUÉM?).

Nível 3 - Controle de hipermídia ( HATEOAS )

Nesse ponto, você dá o salto final e introduz a hipermídia como um mecanismo de controle de fluxo. Um cliente REST não precisa de conhecimento prévio sobre como interagir com qualquer aplicativo ou servidor específico, além de um entendimento genérico da hipermídia. Isso pode ser comunicado em HTTP através do campo de cabeçalho Content-Type. Os formatos de texto incluem AtomPub e HAL (mais conciso) , enquanto o HyperAudio funciona bem para fluxos de áudio (consulte SoundCloud et al)

Gary Rowe
fonte
você diz "REST não é HTTP", mas Roy Fielding parece bastante fixado na idéia de que o hipertexto é um requisito, com todo o acordo HATEOAS sem o qual - segundo ele - você não está fazendo o REST "adequado". Enquanto hipertexto = HTTP, eu me pergunto o quanto você pode realmente fazer fora HTTP ...!
Andres F.
De acordo com isso ( roy.gbiv.com/untangled/2008/… ), Roy Fielding afirma que o hipertexto, ou seu subconjunto, hipermídia, pode ser expresso fora do HTML, desde que seja compatível com algum tipo de link.
Gary Rowe
3
O HTTP funciona bem com o REST porque oferece verbos padronizados para trabalhar com URIs que representam substantivos no REST em um protocolo sem estado. Ideal. No entanto, em sua dissertação ( ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm ), ele observa que "o REST não restringe a comunicação a um protocolo específico, mas restringe a interface entre componentes e, portanto, o escopo de suposições de interação e implementação que poderiam ser feitas entre componentes ". Portanto, é improvável que uma implementação completa do FTP seja RESTful sem o gerenciamento de estado do lado do cliente.
Gary Rowe
2
+1 para o link de Martin Fowler. Como de costume Martin Fowler tem escrito um artigo que descreve um conceito da forma mais clara e concisa possível
Tom Carter
você cobriu state transfernão representação. a ação de falar ou agir em nome de alguém é representação como funciona nesse contexto?
Premraj
11

Embora o REST seja uma abreviação de Representational State Transfer, pode ser mais fácil considerar a ideia de executar várias ações por meio de uma interface um tanto intuitiva.

Por exemplo, um URL como http://www.mysite.com/FindProduct/125/ pode ser interpretado como alguém que deseja obter informações sobre o produto com um ID de 125.

Embora o REST seja geralmente considerado em termos de HTTP, o conceito pode ser aplicado a outros protocolos, conforme observado na referência da Wikipedia.

Outros exemplos de REST que podem ser úteis:

JB King
fonte
2
Obrigado pelo link para "Learn REST: A Tutorial"! Esse é o primeiro tutorial que li que me deixa com a sensação de que aprendi algo concreto. Tudo o mais que li (incluindo o artigo da Wikipedia) descreve o REST apenas das formas mais abstratas, cercado por jargões técnicos.
precisa saber é o seguinte
O primeiro link não está funcionando. Sua resposta é útil, no entanto!
Enthusiast