Ответ 1
Параметры hash полезны для одностраничных javascript-приложений, поэтому он позволяет javascript предоставлять пользователю общий доступ к состоянию приложения. Это предпочтительнее, потому что если у вас есть одностраничное приложение javascript, и пользователи перемещаются и загружают больше контента через ajax и обмениваются URL-адресом, без изменения хэша или нажатия кнопки человек, получающий контент, получит начальную страницу или начальное состояние. Параметры хэша могут быть легко изменены и прочитаны javascript без перезагрузки страницы.
Параметры хэша обычно используются только на стороне клиента, параметры хеша не передаются на сервер... поэтому они полезны только для параметризации для клиента.
/users#!/13
загрузит пользовательскую индексную страницу, а затем javascript сможет прочитать хэш
window.location.hash
и передать его через какой-то клиентский маршрутизатор и сделать соответствующий запрос ajax и, возможно, загрузить шаблон show user и нажать его в dom.
Параметр Url и URL-адрес несколько взаимозаменяемы. Обычно люди используют URL-адрес для описания спокойных ресурсов, таких как
/users/[:id] => /users/13 => /users?id=13
/users/:id/posts => /users/13/posts
/users/:user_id/posts/:id => /users/13/posts/22
etc......
@Walter Tross, сделал хороший момент с точки зрения SEO. Slugged urls или "URL Params" больше индексируются сканерами и имеют тенденцию к рангу выше.
Для параметров, которые не подходят в находчивом маршруте, мы отправляем их как params
/users?sort=user_name&order=asc