Qual é a vantagem de URIs de recursos globais (ou seja endereçamento)?

StackOverflow https://stackoverflow.com/questions/147172

  •  02-07-2019
  •  | 
  •  

Pergunta

Qual é o benefício em referenciar recursos usando URIs globalmente únicos (como descanso faz) versus usando um formato id proprietário?

Por exemplo:

  1. http://host.com/student/5
  2. http://host.com/student?id=5

Na primeira abordagem toda a URL é o ID. Na segunda abordagem apenas o 5 é o ID. Qual é o benefício prático da primeira abordagem sobre o segundo?

Por que RESTO (parecem) sair de seu caminho para defender a primeira abordagem?

- EDIT:

A minha pergunta era confusa porque ele realmente fez duas perguntas separadas:

  1. O que é o benefício de addressibility?
  2. Qual é a diferença entre as duas formas de URI visto acima.

Eu respondi ambas as perguntas abaixo usando o meu próprio post.

Foi útil?

Solução 2

Eu vou responder minha própria pergunta:

1) Por que URIs importantes?

Vou citar Serviços Web RESTful por Leonard Richardson e Sam Ruby (ISBN: 978-0-596-52926-0) :

Considere uma verdadeira URI que os nomes de um recurso no gênero “diretório de recursos sobre água-viva”: http://www.google.com/search?q=jellyfish . Essa busca medusas é tão tanto um URI real como http://www.google.com . Se HTTP não foi endereçável, ou se o Google motor de pesquisa não foi uma aplicação web endereçável, eu não seria capaz de publicar esse URI em um livro. Eu teria que dizer-lhe: “Abrir uma conexão web para google.com, tipo‘medusa’ na caixa de pesquisa, e clique no botão ‘Pesquisa Google’.

Esta não é uma preocupação acadêmica. Até meados dos anos 1990, quando ftp: // URIs tornou-se popular para descrever arquivos em sites FTP, as pessoas tinham de escrever coisas como: “Iniciar uma sessão de FTP anônimo em ftp.example.com. Então mudar para o diretório pub / files / e file.txt arquivo de download.” URIs feita FTP como endereçável como HTTP. Agora, as pessoas apenas escrever: “Download ftp: // ftp.example.com/pub/files/file.txt “. Os passos são os mesmos, mas agora eles pode ser realizada por uma máquina.

[...]

Endereçabilidade é uma das melhores coisas sobre aplicações web. Isso torna mais fácil para clientes para sites de uso de formas que os projetistas originais nunca imaginou.

2) Qual é o benefício de addressibility?

É muito mais fácil de seguir URIs fornecido pelo servidor do que construí-las sozinho. Isto é especialmente verdadeiro como as relações de recursos tornar-se demasiado complexo para ser expressa em regras simples. É mais fácil de codificar a lógica uma vez no servidor de re-implementá-lo em numerosos clientes.

A relação entre os recursos podem mudar, embora os URIs de recursos individuais permanecem inalterados. Por exemplo, se o Google Maps foram para alterar a escala de suas telhas mapa, os clientes que calculam posições azulejos relativos iria quebrar.

3) Qual é a vantagem de URIs sobre IDs personalizados?

IDs personalizados identificar um recurso de forma exclusiva. URIs ir um passo além, dizendo-lhe onde encontrá-lo. Isto simplifica a lógica do cliente.

Outras dicas

A principal coisa quando eu ver Uri como esse é um usuário normal seria capaz de lembrar que uri.

nós geeks são muito bem com pontos de interrogação e obter variáveis, mas se alguém se lembra http: // www. host.com/users/john vez de http://www.host. com /? view = usuários e name = john , em seguida, que é um benefício enorme.

Search Engine Optimization principalmente.

Ele também torna mais fácil de lembrar, e mais limpo, mais profissional que olha na minha opinião.

O primeiro é esteticamente mais agradável.

Tecnicamente, não há diferença, mas usar o antigo quando puder.

Como Ólafur mencionado, a clareza do ex-url é um benefício.

Outra é a flexibilidade de implementação.

Vamos dizer que o aluno 5 alterados com pouca frequência. Se você usar a url estilo REST você tem a opção de servir um arquivo estático em vez de correr código. No Rails é comum que a primeira solicitação para estudantes / 5 criaria um arquivo html em cache sob sua raiz web. Esse arquivo é usado para servir os pedidos subsequentes s / tocar o backend. Naturalmente, não há nada trilhos específicas sobre essa abordagem.

O url posterior não permitiria isso. Você não pode ter variáveis ??de URL (?, =) Nos nomes de páginas estáticas.

Ambos os URIs são válidos a partir de uma perspectiva REST, no entanto Basta perceber que caches web tratar os parâmetros querystring muito diferente.
Se você quiser usar o cache para a sua vantagem, então eu sugiro que você não use um parâmetro de string de consulta para identificar o seu recurso.

Eu acho que se resume a quão perto você quer aderir aos princípios do feng shui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top