No MVC, deve paginação informações ir no caminho ou querystring?
-
22-07-2019 - |
Pergunta
No caminho:
Formato: http://mydomain.com/ {categoria} / { subcategoria} / {pageNumber} / {pageSize}
No querystring:
Formato: http://mydomain.com/ {categoria} / { subcategoria}? pageNumber = {} pageNumber & pageSize = {pageSize}
Eu gosto de ter tudo no caminho, mas o meu problema com isso é que, embora seja óbvio (ou pelo menos um pouco óbvio) que "livros" e "Thriller" estão em primeiro exemplo, o "3" e "25" parecem bastante arbitrária pelo contrário.
Existe um método canônico para determinar o que vai onde no MVC, ou é realmente apenas até o dev?
Solução
Eu prefiro coisas como pagenumbers estar nas variáveis ??querystring. Eu acho que há uma diferença na descritivo entre
http://mydomain.com/books/thriller?pagesize=50&page=4
e
http://mydomain.com/books/thriller/50/4
O ponto (para mim) de ter url do limpa é para eles para ser mais descritivo e legível, e acho que o primeiro exemplo a ser apenas isso.
Um ponto interessante feito por JohnRudolfLewis é:
Uma regra que eu sigo é que, se for necessário o argumento, considere usar o caminho, se o argumento é opcional, use sempre querystring argumentos.
Outras dicas
Uma regra que eu sigo é que se o argumento é necessário, considere o uso do caminho, se o argumento é opcional, sempre use argumentos querystring.
No geral, eu iria ficar para o que faz o olhar url mais legível.
Este site coloca no querystring: https://stackoverflow.com/questions?page=2&pagesize=30
Bem, é, obviamente, depende de você. Mas, você está projetando uma interface RESTful que é suposto ser legível. A querystring é muito melhor a esse respeito. Caso contrário, você está olhando para dois números que realmente poderia ser qualquer coisa. E quem é que vai lembrar a ordem?
Existe um método canônico para determinar o que vai onde no MVC, ou é realmente apenas até o dev?
É até você.
MVC é sobre a organização / fluxo de seu código do lado do servidor e separando a vista da camada de negócios, não tanto sobre os parâmetros de consulta.
Você também pode considerar o seguinte
Formato
http://mydomain.com/{category}/{subcategory}/page/{pageNumber}/results/{pageSize}
Exemplo
http://mydomain.com/books/thriller/page/3/results/25
É muito bonito até o desenv. Eu diria que colocar o pageSize na URL.