@ John Saunders: Como isso é uma possível duplicata? O outro cara aparentemente sabe o que é REST, enquanto Nathan, por outro lado, está confuso.
Fake Code Monkey Rashid
Eu senti que o outro responderia a sua pergunta. Se ninguém mais concordar, a votação apertada terminará. Temos cerca de dez respostas para essa pergunta. Basta clicar na tag "rest" e você verá todas elas.
John Saunders
1
REST é um conjunto de regras para a construção de serviços da web. Se uma API é criada de acordo com essas regras, é uma API REST. Como expliquei o REST ao meu pato de borracha explica algumas dessas regras informalmente.
User42
Respostas:
127
O REST não é um serviço da Web específico, mas um conceito de design (arquitetura) para gerenciar informações de estado. O artigo seminal sobre isso foi a dissertação de Roy Thomas Fielding (2000), "Estilos arquitetônicos e o design de arquiteturas de software baseadas em rede" ( disponível on - line na Universidade da Califórnia, Irvine).
Leia pela primeira vez o post de Ryan Tomayko. Como expliquei o REST para minha esposa ; é um ótimo ponto de partida. Em seguida, leia a dissertação real de Fielding. Não é tão avançado nem longo (seis capítulos, 180 páginas)! (Eu sei que vocês na escola gostam muito).
EDIT: Eu acho que é inútil tentar explicar o REST. Tem tantos conceitos como escalabilidade, visibilidade (sem estado), etc., que o leitor precisa entender, e a melhor fonte para entender isso é a dissertação real. É muito mais do que POST / GET etc.
@ Nathan, confie em mim, eu tive o mesmo problema que você fez antes. Leia a tese, talvez repasse algumas vezes devagar, mas você entenderá o conceito, na verdade não é nada difícil. As pessoas apenas têm uma tendência a explicar mal.
Anders
Quando os desenvolvedores tentam empregar o REST e tentam fazê-lo apenas em seu código (sem planejar todo o sistema com REST em mente), o inferno vem :-) #
3100
@Anders, Considerando REST é o que é, como você pode comparar REST vs Web Services?
REST é um padrão de design de software normalmente usado para aplicativos da web. Nos termos dos leigos, isso significa que é uma ideia comumente usada em muitos projetos diferentes. Significa REpresentational State Transfer . A idéia básica do REST é tratar objetos no lado do servidor (como nas linhas de uma tabela de banco de dados) como recursos que podem ser criados ou destruídos.
A maneira mais básica de pensar sobre o REST é como formatar os URLs de seus aplicativos da web. Por exemplo, se seu recurso foi chamado "postagens", então:
/posts Seria como um usuário acessaria TODAS as postagens, para exibição.
/posts/:id Seria como um usuário acessaria e visualizaria uma postagem individual, recuperada com base em seu ID exclusivo.
/posts/new Seria como você exibia um formulário para criar uma nova postagem.
O envio de uma solicitação POST /usersseria como você realmente criaria uma nova postagem no nível do banco de dados.
O envio de uma solicitação PUT /users/:idseria como você atualizaria os atributos de uma determinada postagem, novamente identificados por um ID exclusivo.
O envio de uma solicitação DELETE /users/:idseria como você excluiria uma determinada postagem, novamente identificada por um ID exclusivo.
Pelo que entendi, o padrão REST foi popularizado principalmente (para aplicativos da web) pela estrutura Ruby on Rails, o que coloca uma grande ênfase nas rotas RESTful. Eu poderia estar errado sobre isso.
Talvez eu não seja o mais qualificado para falar sobre isso, mas foi assim que aprendi (especificamente para o desenvolvimento do Rails).
Quando alguém se refere a uma "API REST", geralmente o que eles querem dizer é uma API que usa URLs RESTful para recuperar dados.
Você tem sorte, porque o Rails é construído sobre os princípios REST e, se você usar as ferramentas do Rails, seu código será RESTful. No entanto, existem codificadores por aí que não entendem nada sobre o REST, codificam o que querem e, no final, utilizam essa 'formatação de URL' porque está na moda.
karatedog
8
onde / os usuários já foram usados nesta resposta, não deveriam ser / posts?
Mayuresh Srivastava 01/07
@MayureshSrivastava Observe que os exemplos de PUT têm: id e os exemplos de POST não têm: id. Google pelo resto da história. (POST: não-seguro, não-idempotent; PUT: não-seguro, idempotent)
Ajeet Ganga
38
RESTé um estilo arquitetônico e um design para arquiteturas de software baseadas em rede.
RESTconceitos são referidos como recursos. Uma representação de um recurso deve ser sem estado. É representado através de algum tipo de mídia. Alguns exemplos de tipos de mídia incluem XML, JSONe RDF. Os recursos são manipulados pelos componentes. Os componentes solicitam e manipulam recursos por meio de uma interface uniforme padrão. No caso do HTTP, esta interface é constituído por operações padrão de HTTP por exemplo GET, PUT, POST, DELETE.
RESTnormalmente é usado HTTP, principalmente devido à simplicidade do HTTP e seu mapeamento muito natural para os princípios RESTful. O REST, no entanto, não está vinculado a nenhum protocolo específico.
Princípios fundamentais do REST
Comunicação Cliente-Servidor
As arquiteturas cliente-servidor têm uma separação muito distinta de preocupações. Todos os aplicativos criados no estilo RESTful também devem ser, em princípio, cliente-servidor.
Sem Estado
Cada solicitação do cliente para o servidor requer que seu estado seja totalmente representado. O servidor deve ser capaz de entender completamente a solicitação do cliente sem usar nenhum contexto ou estado da sessão do servidor. Daqui resulta que todo estado deve ser mantido no cliente. Discutiremos a representação sem estado em mais detalhes posteriormente.
Armazenável em cache
As restrições de cache podem ser usadas, permitindo que os dados de resposta sejam marcados como armazenáveis em cache ou impossíveis de serem armazenados. Quaisquer dados marcados como armazenáveis em cache podem ser reutilizados como resposta à mesma solicitação subsequente.
Interface uniforme
Todos os componentes devem interagir através de uma única interface uniforme. Como toda a interação de componentes ocorre por meio dessa interface, a interação com diferentes serviços é muito simples. A interface é a mesma! Isso também significa que as mudanças na implementação podem ser feitas isoladamente. Tais mudanças não afetarão a interação fundamental dos componentes porque a interface uniforme é sempre inalterada. Uma desvantagem é que você está preso à interface. Se uma otimização puder ser fornecida a um serviço específico alterando a interface, você estará sem sorte, pois o REST proíbe isso. Pelo lado positivo, no entanto, o REST é otimizado para a web, daí a incrível popularidade do REST sobre HTTP!
Os conceitos acima representam características definidoras do REST e diferenciam a arquitetura REST de outras arquiteturas, como serviços da web. É útil observar que um serviço REST é um serviço da Web, mas um serviço da Web não é necessariamente um serviço REST.
Representa Representational State Transfer e pode significar muitas coisas, mas geralmente quando você está falando sobre APIs e aplicativos, está falando do REST como uma maneira de executar serviços da Web ou obter programas para falar pela Web.
O REST é basicamente uma maneira de se comunicar entre sistemas e faz muito do que o SOAP RPC foi projetado para fazer, mas, embora o SOAP geralmente faça uma conexão, autentique e faça coisas nessa conexão, o REST funciona da mesma maneira que a Web. . Você tem um URL e, quando solicita esse URL, recebe algo de volta. É aqui que as coisas começam a ficar confusas porque as pessoas descrevem a Web como o maior aplicativo REST e, embora tecnicamente correto, isso realmente não ajuda a explicar o que é.
Em poucas palavras, o REST permite que dois aplicativos falem pela Internet usando ferramentas semelhantes às usadas por um navegador da web. Isso é muito mais simples que o SOAP e muito do que o REST faz é dizer: "Ei, as coisas não precisam ser tão complexas".
REST é uma arquitetura baseada em restrições, SOAP é um protocolo, essas são coisas completamente diferentes. Eu não gosto quando as pessoas estão falando sobre SOAP e REST no mesmo conceito, não é de admirar que as pessoas se confundam com isso.
Anders
@ Anders - Ele disse que estava olhando para uma API REST e achou que era uma maneira de usar os serviços da Web. Você pode usar o REST assim e, nessa capacidade, realiza muito do que o SOAP realiza. Também é possível falar sobre a Web como o maior aplicativo RESTful do mundo, mas isso não explica realmente para o que você usaria uma API REST.
Mark
Na verdade, esse foi o meu principal problema, ver REST e SOAP no mesmo conceito. Parece que as APIs são apenas RESTful no design.
A ideia básica é que, em vez de ter uma conexão contínua com o servidor, você faça uma solicitação, obtenha alguns dados, mostre isso a um usuário, mas talvez não todos, e quando o usuário fizer algo que exija mais dados, ou, para passar alguns para o servidor, o cliente inicia uma mudança para um novo estado.
Talvez seja só eu, mas eu gosto de ver a resposta relevante no stackoverflow junto com a citação apropriada. Apenas me dê um humor e suponha que a wikipedia ficasse maluca. De que serve o seu link então hmm? :)
Código Falso Monkey Rashid
1
@Hack Saw: Isso não deveria estar na sua resposta?
Fake Code Monkey Rashid
Acabei de perceber o recurso de edição. :)
Hack Saw
1
@karatedog: O REST pode ser alcançado com HTTP, mas isso pode ser feito com uma variedade de métodos de transferência de dados.
Home
1
Este é o protocolo HTTP sobre o qual você está escrevendo, o REST é uma arquitetura.
Respostas:
O REST não é um serviço da Web específico, mas um conceito de design (arquitetura) para gerenciar informações de estado. O artigo seminal sobre isso foi a dissertação de Roy Thomas Fielding (2000), "Estilos arquitetônicos e o design de arquiteturas de software baseadas em rede" ( disponível on - line na Universidade da Califórnia, Irvine).
Leia pela primeira vez o post de Ryan Tomayko. Como expliquei o REST para minha esposa ; é um ótimo ponto de partida. Em seguida, leia a dissertação real de Fielding. Não é tão avançado nem longo (seis capítulos, 180 páginas)! (Eu sei que vocês na escola gostam muito).
EDIT: Eu acho que é inútil tentar explicar o REST. Tem tantos conceitos como escalabilidade, visibilidade (sem estado), etc., que o leitor precisa entender, e a melhor fonte para entender isso é a dissertação real. É muito mais do que POST / GET etc.
fonte
REST é um padrão de design de software normalmente usado para aplicativos da web. Nos termos dos leigos, isso significa que é uma ideia comumente usada em muitos projetos diferentes. Significa REpresentational State Transfer . A idéia básica do REST é tratar objetos no lado do servidor (como nas linhas de uma tabela de banco de dados) como recursos que podem ser criados ou destruídos.
A maneira mais básica de pensar sobre o REST é como formatar os URLs de seus aplicativos da web. Por exemplo, se seu recurso foi chamado "postagens", então:
/posts
Seria como um usuário acessaria TODAS as postagens, para exibição./posts/:id
Seria como um usuário acessaria e visualizaria uma postagem individual, recuperada com base em seu ID exclusivo./posts/new
Seria como você exibia um formulário para criar uma nova postagem.O envio de uma solicitação POST
/users
seria como você realmente criaria uma nova postagem no nível do banco de dados.O envio de uma solicitação PUT
/users/:id
seria como você atualizaria os atributos de uma determinada postagem, novamente identificados por um ID exclusivo.O envio de uma solicitação DELETE
/users/:id
seria como você excluiria uma determinada postagem, novamente identificada por um ID exclusivo.Pelo que entendi, o padrão REST foi popularizado principalmente (para aplicativos da web) pela estrutura Ruby on Rails, o que coloca uma grande ênfase nas rotas RESTful. Eu poderia estar errado sobre isso.
Talvez eu não seja o mais qualificado para falar sobre isso, mas foi assim que aprendi (especificamente para o desenvolvimento do Rails).
Quando alguém se refere a uma "API REST", geralmente o que eles querem dizer é uma API que usa URLs RESTful para recuperar dados.
fonte
REST
é um estilo arquitetônico e um design para arquiteturas de software baseadas em rede.REST
conceitos são referidos como recursos. Uma representação de um recurso deve ser sem estado. É representado através de algum tipo de mídia. Alguns exemplos de tipos de mídia incluemXML
,JSON
eRDF
. Os recursos são manipulados pelos componentes. Os componentes solicitam e manipulam recursos por meio de uma interface uniforme padrão. No caso do HTTP, esta interface é constituído por operações padrão de HTTP por exemploGET
,PUT
,POST
,DELETE
.REST
normalmente é usadoHTTP
, principalmente devido à simplicidade do HTTP e seu mapeamento muito natural para os princípios RESTful. O REST, no entanto, não está vinculado a nenhum protocolo específico.Princípios fundamentais do REST
Comunicação Cliente-Servidor
As arquiteturas cliente-servidor têm uma separação muito distinta de preocupações. Todos os aplicativos criados no estilo RESTful também devem ser, em princípio, cliente-servidor.
Sem Estado
Cada solicitação do cliente para o servidor requer que seu estado seja totalmente representado. O servidor deve ser capaz de entender completamente a solicitação do cliente sem usar nenhum contexto ou estado da sessão do servidor. Daqui resulta que todo estado deve ser mantido no cliente. Discutiremos a representação sem estado em mais detalhes posteriormente.
Armazenável em cache
As restrições de cache podem ser usadas, permitindo que os dados de resposta sejam marcados como armazenáveis em cache ou impossíveis de serem armazenados. Quaisquer dados marcados como armazenáveis em cache podem ser reutilizados como resposta à mesma solicitação subsequente.
Interface uniforme
Todos os componentes devem interagir através de uma única interface uniforme. Como toda a interação de componentes ocorre por meio dessa interface, a interação com diferentes serviços é muito simples. A interface é a mesma! Isso também significa que as mudanças na implementação podem ser feitas isoladamente. Tais mudanças não afetarão a interação fundamental dos componentes porque a interface uniforme é sempre inalterada. Uma desvantagem é que você está preso à interface. Se uma otimização puder ser fornecida a um serviço específico alterando a interface, você estará sem sorte, pois o REST proíbe isso. Pelo lado positivo, no entanto, o REST é otimizado para a web, daí a incrível popularidade do REST sobre HTTP!
Os conceitos acima representam características definidoras do REST e diferenciam a arquitetura REST de outras arquiteturas, como serviços da web. É útil observar que um serviço REST é um serviço da Web, mas um serviço da Web não é necessariamente um serviço REST.
Consulte esta postagem do blog sobre os principais de design do REST para obter mais detalhes sobre o REST e os princípios acima.
fonte
Representa Representational State Transfer e pode significar muitas coisas, mas geralmente quando você está falando sobre APIs e aplicativos, está falando do REST como uma maneira de executar serviços da Web ou obter programas para falar pela Web.
O REST é basicamente uma maneira de se comunicar entre sistemas e faz muito do que o SOAP RPC foi projetado para fazer, mas, embora o SOAP geralmente faça uma conexão, autentique e faça coisas nessa conexão, o REST funciona da mesma maneira que a Web. . Você tem um URL e, quando solicita esse URL, recebe algo de volta. É aqui que as coisas começam a ficar confusas porque as pessoas descrevem a Web como o maior aplicativo REST e, embora tecnicamente correto, isso realmente não ajuda a explicar o que é.
Em poucas palavras, o REST permite que dois aplicativos falem pela Internet usando ferramentas semelhantes às usadas por um navegador da web. Isso é muito mais simples que o SOAP e muito do que o REST faz é dizer: "Ei, as coisas não precisam ser tão complexas".
Vale a pena ler:
fonte
http://en.wikipedia.org/wiki/Representational_State_Transfer
A ideia básica é que, em vez de ter uma conexão contínua com o servidor, você faça uma solicitação, obtenha alguns dados, mostre isso a um usuário, mas talvez não todos, e quando o usuário fizer algo que exija mais dados, ou, para passar alguns para o servidor, o cliente inicia uma mudança para um novo estado.
fonte