Дизайн URL: http://domain/app/document123/edit или http://domain/app/edit/document123? - PullRequest
1 голос
/ 15 февраля 2010

Допустим, у меня есть приложение, и в этом приложении мне нужно просматривать и редактировать «документы». Я думал об этом дизайне URL.

  1. Чтобы просмотреть документ по умолчанию с идентификатором «x123»:

    http://domain/app/document-x123

  2. Чтобы отредактировать тот же документ:

    http://domain/app/document-x123/edit

  3. Удалить

    http://domain/app/document-x123/delete

Это больше из моих размышлений о документе как об объекте с точки зрения ОО (например, "object.Action ()"). Это плохо? Буду ли я столкнуться с неприятностями? то есть было бы лучше иметь # 2 и 3 следующим образом?

1.

http://domain/app/edit/document-x123

2

http://domain/app/delete/document-x123

Ответы [ 3 ]

3 голосов
/ 15 февраля 2010

resource.action(id) кажется мне более естественным ... поэтому URL будет:

http://domain/app/documents/delete/x123
2 голосов
/ 15 февраля 2010

Мне нравится http://domain/app/document-x123/edit предпочтение.

Возьми живой журнал:

http://jwz.livejournal.com/

http://jwz.livejournal.com/profile

http://jwz.livejournal.com/calendar

(извините, теперь, когда вас гуглят, это всплывет.)

Или ТАК:

https://stackoverflow.com/users/208990/chris-simmons https://stackoverflow.com/users/208990?tab=activity#tab-top

Или API Twitter:

http://apiwiki.twitter.com/Twitter-REST-API-Method:-POST-lists (http://api.twitter.com/1/user/lists.format)

Для меня URL-каталоги переходят от "общих" к частным. Хорошо, я на stackoverflow.com. Теперь я сужаюсь до «пользователей». Теперь я выбрал конкретного пользователя. Сейчас я смотрю на его деятельность.

Или «Я хочу получить доступ к API Twitter. Теперь я хочу перейти к определенному пользователю. А теперь я хочу получить его списки».

Так что я думаю, что ваша интуиция в порядке, и она сочетается с тем, что делают остальные интубы!

1 голос
/ 15 февраля 2010

Как сказал qwerty, мне нравится идея Resource -> Action -> ID, но есть что сказать об обоих (более семантически)

Если вы посмотрите на этот URL для воображаемого генератора форм на примере компании. Com :

http://example.com/form/view/1

Скорее всего, вы бы разбили его на:

1) Use the Form Module
2) Use the View Module (or pass it as an action)
3) Pass the ID 1 to the module

Я думаю, что этот URL выглядит так, как будто вы передаете номер 1 через модуль Form :: View и извлекаете данные.

Теперь, если вы посмотрите на ДРУГОЙ воображаемый генератор форм:

http://example.com/form/1/view

Вы можете разбить его на это

1) Use the Form Module
2) Open up the data for ID 1
3) Preform the action 'view' on the ID 1

Я думаю, что этот URL выглядит так, как будто вы открываете данные для идентификатора 1 и выполняете предварительные действия и действия над ним.

Я думаю, что оба одинаково верны, в основном это только семантика.

...