Quais são os benefícios de um serviço da web RESTful?

8

Tarefa acadêmica ... Primeiro, foi-nos dito para gerar um conjunto de .htmlarquivos estáticos mostrando os resultados das eleições em várias divisões administrativas. Então nos disseram para "modernizar" isso usando modelos do Django. Justo, posso ver os benefícios dessa abordagem.

Mas nos disseram para "mordernizar" ainda mais isso, tornando o aplicativo "RESTful". Tanto quanto sei, isso significa que o servidor pode expor apenas uma API que responde às solicitações enviando dados brutos aos clientes no formato JSON; o cliente, que é um site HTML + CSS + JS estático, deve receber esse JSON e construir dinamicamente a página da Web no lado do navegador com JavaScript.

Como, infelizmente, perdi algumas palestras, quando isso deve ter sido explicado, alguém poderia me explicar quais são os benefícios de tal abordagem? Porque devo dizer que só posso ver desvantagens:

  • Usuários com JavaScript desativado não poderão visualizar a página.
  • Corrija-me se eu estiver errado, mas o AFAIK dificilmente poderá ser indexado pelo Google.
  • Será impossível para os usuários marcarem os resultados das eleições em uma divisão específica. Em vez disso, cada vez que eles visitam o lado, eles precisam clicar para fazer o JavaScript carregar os resultados dessa divisão específica. Ou implante um bot Selenium que faça isso por eles.
  • Ele quebra / retrocede os botões do navegador.
gaazkam
fonte
Apenas mais um ponto. O Google agora processa a página como um navegador para indexar o conteúdo. Portanto, o conteúdo dinâmico do seu serviço REST é rastreável se ele for para a página (pelo menos pelo google AFAIK). . Compreender páginas web melhor
Naresh Kumar

Respostas:

13

Tecnicamente, um servidor Web que serve páginas HTML é RESTful. Text / Html é uma representação perfeitamente válida válida , desde que o tipo de mídia esteja definido corretamente, de acordo com a interface uniforme . Apenas não abuse dos verbos (GET, POST, etc) e siga o HATEOAS (ou seja, use essencialmente uma URL sensata que identifique exclusivamente um recurso) e bam é repousante.

Acho que o que seu professor está perguntando é que suas páginas da Web usam uma API RESTful que geralmente retorna json (mas, novamente, pode retornar qualquer tipo de mídia que o cliente aceite ).

Quanto às suas objeções:

Usuários com JavaScript desativado não poderão visualizar a página.

Bem, eles não poderão obter nenhum conteúdo dinâmico. A página ainda pode conter conteúdo estático.

Corrija-me se eu estiver errado, mas o AFAIK dificilmente poderá ser indexado pelo Google.

O conteúdo estático, incluindo as metatags, ainda pode ser rastreado sem problemas.

Será impossível para os usuários marcarem os resultados das eleições em uma divisão específica. Em vez disso, cada vez que eles visitam o lado, eles precisam clicar para fazer o JavaScript carregar os resultados dessa divisão específica. Ou implante um bot Selenium que faça isso por eles. Ele quebra / retrocede os botões do navegador.

Nah. Se você seguir o HATEOAS corretamente, o URL deverá fornecer todas as informações de estado necessárias para renderizar a página e, se estiver no URL, poderá ser marcado como favorito.

John Wu
fonte
Obrigado, mas há uma coisa que eu não entendo. Se o URL contiver todas as informações, estou enviando uma solicitação ao servidor para obter todos os resultados das eleições para esta divisão administrativa e, se eu seguir a especificação da tarefa, receberei um JSON ... Não, conforme os requisitos, Devo rastrear esse JSON XMLHttpResponse, o que não afeta o que é mostrado na barra de endereços do navegador.! Portanto, para qualquer divisão administrativa que eu visualizar os resultados das eleições, o URL que pode ser marcado como favorito é o mesmo e aponta para a página principal.
gaazkam
4
Verdade. se o seu javascript fizer alterações dinâmicas na página, normalmente o URL não será atualizado para corresponder. Mas você pode fazer a correspondência se os favoritos forem importantes. Consulte pushState e replaceState e possivelmente location.hash para obter os meios para fazer isso.
John Wu
1
E, na verdade, se você estiver usando o estado push corretamente, o Google também rastreará o conteúdo dinâmico: newmediacampaigns.com/blog/…
Paul
2
+1 (principalmente por mencionar que as respostas html podem ser RESTful), mas as aranhas do Google já executam JavaScript há algum tempo?
RubberDuck
Desacoplar front-end e back-end com um sistema API de comunicação padrão.
Sgargel 17/05/19
0

É uma distinção sutil, mas você está passando de uma página da web para um aplicativo da web. Em uma página da web, o servidor e o cliente estão fortemente acoplados; sua única opção para visualizar informações é através da página da web.

Ao mover os dados para um serviço da web RESTful, a visualização (que costumava ser a página da web) e o modelo (os dados) são completamente dissociados e suas opções para interagir com os dados aumentam.

PerryD
fonte
0

Uma API REST, como qualquer API, disponibiliza os recursos em uma interface legível por máquina que qualquer cliente pode usar.

Se você usa essa API para criar seu site, é um dos muitos aplicativos possíveis usando o mesmo serviço.

As vantagens do estilo REST são: - use um protocolo existente (aqui HTTP) para trocar os dados - use tipos de mídia definidos para trocar recursos.

Isso significa que outros desenvolvedores podem usar o conhecimento e as ferramentas existentes para usar sua API.

Kwebble
fonte