As substituições dos roteadores Node.js e Zend são para seqüências de consulta?

5

Eu não entendo o verdadeiro ponto dos roteadores Node.js e Zend. Eu sinto que eles estão tentando substituir a string de consulta, mas vejo apenas exemplos de rotas de nível único. Por exemplo, isso é o que eu pensei

Consultas da "velha escola"

www.site.com/catalog.php?size=10&colour=black&style=3xz

Roteadores

www.site.com/catalog/3xz/10/black

Então eu li um post de SO tentando realizar o acima, e a resposta top afirmou algo como "tentando reinventar strings de consulta". Então agora estou confuso. Qual é o sentido dessas rotas se você ainda precisar de strings de consulta?

    
por user3822370 06.04.2016 / 05:55
fonte

2 respostas

4

tl; dr: Cada URI deve identificar exclusivamente um recurso. O URI componente do caminho geralmente é organizado hierarquicamente e aponta para recursos não adulterados (coleções ou membros individuais / instâncias). O componente de consulta do URI é geralmente usado como mecanismo de filtragem.

Acho que a ideia é que a string de consulta é uma maneira de filtrar um recurso, que pode ser uma coleção ou uma instância. Por exemplo, você pode ter um sistema que rastreia trabalhos, para que você possa ter um URI como:

link

que retorna uma coleção de tarefas. E se você quiser uma instância de recurso de trabalho específica, poderá solicitá-la com um URI como:

link

em que "a1b2c3" é o ID do trabalho. O mesmo serviço também pode expor eventos de emprego com um URI como:

link

Observe que os URIs que representam coleções geralmente terminam com / , e recursos individuais ou instâncias de coisas normalmente não. Eu acho que isso serve para espelhar a aparência de um sistema de arquivos típico, onde os diretórios terminam com / e os arquivos não.

Agora, dito isso, talvez você queira obter um subconjunto de eventos de trabalho que pertençam a um trabalho específico com um URI assim:

link

Isso ainda responderia com uma coleção, mas a coleção seria filtrada por job-id , como uma cláusula WHERE em uma consulta SQL.

Ou talvez você queira solicitar que alguma representação especial de dados retorne com um recurso individual, por exemplo, se você quiser uma versão estendida (seja lá o que isso signifique), você pode solicitar

link

ou para limitar os campos que voltam para id , user e start

link

No exemplo que você forneceu, a ideia pode ser que você esteja explorando um recurso específico de maneira hierárquica. Cada URI deve identificar exclusivamente um recurso, seja esse recurso uma instância ou uma coleção . No seu exemplo,

link

deve representar uma coleção, que contém

link

como outra coleção, da qual

o link é um membro / instância. Não há nenhuma lei que diga que você tem que projetar seus URIs assim, e isso realmente depende do domínio que você está modelando; mas no seu exemplo acima, dependendo da natureza dos dados, se você tentou o seguinte URI:

link

Espero que isso represente uma coleção; talvez uma coleção de um item, mas uma coleção, no entanto. Da mesma forma, eu poderia esperar

link

para ser uma instância / membro dessa coleção.

    
por 07.04.2016 / 00:14
fonte
1

Isso porque eles estão tentando substituir a string de consulta. Conceitualmente, eles estão substituindo "chame essa função com esse parâmetro" com "obter o que está nesse local".

Embora, à primeira vista, eles pareçam ser os mesmos funcionalmente, um mais profundo revela diferenças entre pessoas e programas. As rotas tornam as diferentes ramificações do seu código mais claras - portanto, se você tiver um caso especial de 10 ou 3xz que apareça mais claramente do que com um if / then em algum lugar. Eles fazem regras especiais significativas para o seu programa. As rotas fornecem o mesmo benefício para os usuários finais - atribui significado às partes do caminho, tornando essas partes mais memoráveis e mais fáceis de reconhecer e analisar.

As rotas fornecem benefícios para pessoas, mecanismos de pesquisa (que podem reconhecer as mesmas partes que o usuário e dar a eles mais peso) e desenvolvedores.

Observe que alguns benefícios só se aplicam realmente a vários parâmetros.

    
por 07.04.2016 / 07:53
fonte