Нет никакой разницы между двумя URI с точки зрения клиента. URI непрозрачны для клиента. Используйте любые более аккуратные карты в вашей серверной инфраструктуре.
Что касается REST, то здесь нет абсолютно никакой разницы. Я полагаю, что причина, по которой так много людей считают, что ресурс определяется только компонентом пути, заключается в следующей строке в RFC 2396
Компонент запроса представляет собой строку
информация для интерпретации
ресурс.
Эта строка была позже изменена в RFC 3986 на:
Компонент запроса содержит
неиерархические данные, которые наряду с
данные в компоненте пути (раздел
3.3), служит для идентификации ресурса
ИМХО это означает, что и строка запроса, и сегмент пути функционально эквивалентны, когда дело доходит до идентификации ресурса.
Обновление с учетом комментария Стива.
Простите, если я возражаю против прилагательного "уборщик". Это просто слишком субъективно. Вы, правда, имеете в виду, что я пропустил значительную часть вопроса.
Я думаю, что ответ на вопрос, возвращать ли 404, зависит от того, какой ресурс извлекается. Это представление результатов поиска, или это представление продукта? Чтобы узнать это, вам действительно нужно взглянуть на отношение ссылок, которое привело нас к URL.
Если предполагается, что URL возвращает представление Product, тогда должен быть возвращен 404, если код не существует. Если URL возвращает результат поиска, он не должен возвращать 404.
Конечным результатом является то, что внешний вид URL не является определяющим фактором. При этом принято, что строки запроса используются для возврата результатов поиска, поэтому более интуитивно понятно использовать этот стиль URL, если вы не хотите возвращать 404.