Какой дизайн URL лучше долгосрочного? - PullRequest
3 голосов
/ 14 июля 2009

Мне нравятся URL-адреса переполнения стека, особенно формы:

  • / вопросы / {Id} / {Название}
  • / пользователей / {Id} / {Name}

Это здорово, потому что при изменении названия вопроса поисковые системы будут вводить новый URL, но все старые URL будут работать.

Джефф упомянул в одном из подкастов - в то время, когда была объявлена ​​функция Flair - что он сожалел о некоторых дизайнерских решениях, которые он принял, когда дело дошло до этих форм. В частности, он был обеспокоен своими псевдо-глаголами, как в:

  1. / пользователей / редактировать / {Id}
  2. / сообщений / {Id} / редактировать

Было немного неясно, какую из этих форм глагола он предпочел.

Какой шаблон вы предпочитаете (1 или 2) и почему?

Ответы [ 6 ]

8 голосов
/ 14 июля 2009

Я предпочитаю шаблон 2 по той простой причине, что URL читается лучше. Для сравнения:

  1. «Я хочу получить доступ к ресурсу РЕДАКТИРОВАНИЕ ПОЛЬЗОВАТЕЛЕЙ для этого идентификатора» против
  2. «Я хочу получить доступ к ресурсу POSTS с этим идентификатором и отредактировать его» * ​​1006 *

Если вы забыли последнюю часть каждого URL-адреса, то во втором URL-адресе у вас будет хороший план восстановления.

  1. Привет, get / users / edit ... что? что вы хотите редактировать? Ошибка!
  2. Привет, get / posts / id ... о, вы хотите сообщение с этим идентификатором? Круто.

Мои 2 копейки!

2 голосов
/ 14 июля 2009

Полагаю, он предпочел бы № 2.

Если вы ставите строку первой, это означает, что она всегда должна быть там. В противном случае вы получите ужасно выглядящие URL, такие как:

/users//4534905

Независимо от того, что вам нужно идентификатор пользователя, так что это

/user/4534905/

Заканчивается, выглядит лучше. Если вам нужны фейковые глаголы, вы можете добавить их в конец.

/user/4534905/edit
1 голос
/ 14 июля 2009

Я предпочитаю и второй вариант.

Но я все еще считаю, что полученные URL-адреса ужасны, потому что там нет никакого смысла. Вот почему я склонен разбивать создание URL на две части:

/posts/42 
/posts/42-goodbye-and-thanks-for-all-the-fish

Оба URL ссылаются на один и тот же документ, и, учитывая последний, во внутреннем запросе используется только идентификатор. Таким образом, я могу предложить несколько значимых URL-адресов и при этом воздерживаться от вздутия моих запросов.

1 голос
/ 14 июля 2009

Мне нравится номер 2:

также:

/questions/foo == Все вопросы называются "foo"
/questions/{id}/foo == Вопрос под названием "foo"

/users/aiden == Все пользователи называют aiden
/users/{id}/aiden == Пользователь по имени aiden
/users/aiden?a=edit или /users/aiden/edit == Редактировать список пользователей с именем Aiden?
/users/{id}/edit или /users/{id}?a=edit лучше

/rss/users/aiden == RSS-обновление пользователей под названием aiden
/rss/users/{id} == RSS-лента активности пользователя
/rss/users/{id}/aiden == RSS-лента изменений профиля Эйдена

Я лично не возражаю против аргументов GET и считаю, что / x / y / z должен ссылаться на изменяемый ресурс, а GET / POST / PUT должен действовать на него.

Мой 2р

1 голос
/ 14 июля 2009

Ни. Размещение неанглийского числового идентификатора в URL вряд ли удобно для поисковых систем. Лучше всего использовать заголовки с пробелами, замененными тире и строчными буквами. Поэтому для меня правильная форма:

/question/how-do-i-bake-an-apple-pie
/user/frank-krueger
0 голосов
/ 14 июля 2009
/question/how-do-i-bake-an-apple-pie
/question/how-do-i-bake-an-apple-pie-2
/question/how-do-i-bake-an-apple-pie-...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...