Atualmente, todo mundo faz SOA , mesmo que alguns não entendam realmente o que é isso. Então eles fazem errado. Usando isso como analogia, sei o que é REST (ou pelo menos acho que faço) e quero fazer parte dele. Mas eu quero fazer certo.
Então, minha pergunta é qual é a maneira correta de fazer o REST?
rest
soa
resources
implementations
JohnDoDo
fonte
fonte
Respostas:
Bem, existem várias maneiras de aprender a criar um aplicativo Web RESTful e não, não existe um caminho certo exclusivo. RESTful não é um padrão, mas usa um conjunto de padrões (HTTP, URI, Mime Type, ...).
Comece com isso: Como expliquei o REST para minha esposa
Em seguida, continue com o seguinte: Livro de Receitas de Serviços da Web RESTful
E então faça todo o seu esforço para desenvolver aplicativos da Web, porque a melhor maneira de aprender é fazer experimentos e você pode aprender muito com seus erros;)
Não se preocupe se seus primeiros aplicativos da Web não forem completamente RESTful: você encontrará o caminho para fazê-lo!
Então, citando Obi-Wan Kenobi, "que a força esteja com você!" ;)
EDITAR
Ok, deixe-me ser mais específico. Você quer fazer algum aplicativo web RESTful, não é? Bem, como eu disse, existem muitas maneiras de fazer isso, mas essa é a principal diretriz.
Definição
REST (Representational State Transfer) é o estilo de uma arquitetura de software para sistemas distribuídos (como WWW). Não é um padrão, mas usa um conjunto de padrões: HTTP, AJAX, HTML, URI, Mime Type, etc. Estamos falando sobre representação de um recurso, não sobre um recurso em si. Retirado de 'Como expliquei o REST para minha esposa':
Restrições da arquitetura
Interface uniforme
CRUD
Ok, vimos que, para identificar recursos, podemos usar o URI, mas precisamos de mais alguma coisa para as ações (adicionar, modificar, excluir etc.): uma grande bem-vinda ao CRUD (Criar, Ler, Atualizar e Excluir).
Agora, com relação a PUT e DELETE, alguns problemas técnicos podem aparecer (você os obterá no formato HTML): geralmente os desenvolvedores ignoram esse problema usando POST para cada solicitação 'PUT' e 'DELETE'. Oficialmente, você deve usar PUT e DELETE. A propósito, faça o que quiser. Minha experiência me leva a usar POST e GET sempre.
--- A próxima parte deve ser usada, mas não é um vínculo do REST: trata-se de dados vinculados ---
URI
URI abstrato dos detalhes técnicos! Diga adeus ao URI da seguinte maneira:
Redesenhe o URI! Pegue o link acima e altere-o da seguinte maneira:
Está muito melhor, não é? Isso poderia ser feito por:
Outra coisa: use URI diferente para representar recursos diferentes:
Preste atenção : about.html e about.rdf não são arquivos! Eles podem ser o resultado de uma transformação XSLT!
Negociação de conteúdo
Se você chegou a esse ponto, parabéns! Provavelmente, você está pronto para obter conceitos mais abstratos porque estamos inserindo os detalhes técnicos da Web Semântica;) Bem, quando seu cliente deseja um recurso, ele normalmente faz a seguinte solicitação:
Mas o servidor não responde com o about.rdf porque possui um URI diferente ( http://www.example.com/about.rdf ). Então, vamos dar uma olhada no padrão 303 ! O servidor retornará isso:
E o cliente seguirá o link retornado da seguinte forma:
Por fim, o servidor retornará o recurso solicitado:
Não se preocupe: seu aplicativo cliente não fará nada disso! O padrão 303 deve ser feito pelo aplicativo do servidor e seu navegador fará o resto;)
Conclusão
Muitas vezes, a teoria está muito longe da prática. Sim, agora você sabe como projetar e desenvolver um aplicativo RESTful, mas a diretriz acima é apenas uma dica. Você encontrará a melhor maneira de criar aplicativos da Web e provavelmente não será o mesmo que a teoria deseja. Não dê a mínima: D!
Bibliografia
Serviços Web RESTful, Sameer Tyagi
APIs REST devem ser baseadas em hipertexto, Roy Thomas Fielding
Serviços da Web RESTful: Noções básicas, Alex Rodriguez
Fluxo de trabalho REST da Webber
fonte
Não é necessário livro da Bíblia; Eu tinha as mesmas perguntas exatas e aprendi tudo o que precisava ou queria saber sobre o REST lendo estes três artigos:
Como você lerá nos artigos acima, a chave é pensar nas partes acessíveis do seu aplicativo como "recursos" que podem ser criados, recuperados, atualizados ou excluídos usando os "verbos" HTTP existentes: GET, PUT, POST , DELETE.
Além disso, saiba a diferença entre PUT e POST e quando usá-los. GET, PUT E DELETE devem ser transações idempotentes, POST não.
Além disso, faça uso adequado dos códigos de status HTTP ao se comunicar novamente com o cliente.
fonte