В чем преимущество глобальных URI ресурсов (т. Е. Адресуемости)? - PullRequest
3 голосов
/ 29 сентября 2008

В чем преимущество ссылки на ресурсы с использованием глобально уникальных URI (как это делает REST) ​​по сравнению с использованием проприетарного формата идентификаторов?

Например:

  1. http://host.com/student/5
  2. http://host.com/student?id=5

В первом подходе весь URL является идентификатором. Во втором подходе только 5 является идентификатором. Каково практическое преимущество первого подхода перед вторым?

Почему REST (кажется) старается изо всех сил защищать первый подход?

- РЕДАКТИРОВАТЬ:

Мой вопрос сбивал с толку, потому что он действительно задавал два отдельных вопроса:

  1. В чем преимущество адресности?
  2. В чем разница между двумя вышеупомянутыми формами URI.

Я ответил на оба вопроса ниже, используя свой собственный пост.

Ответы [ 7 ]

3 голосов
/ 29 сентября 2008

Главное, когда я вижу, что URI такой, что обычный пользователь сможет запомнить этот URI.

Нам, гикам, хорошо с вопросительными знаками и переменными, но если кто-то помнит http://www.host.com/users/john вместо http://www.host.com/?view=users&name=john,, тогда это огромное преимущество.

1 голос
/ 08 октября 2008

Я отвечу на свой вопрос:

1) Почему важны URI?

Я процитирую из Веб-службы RESTful Леонарда Ричардсона и Сэма Руби (ISBN: 978-0-596-52926-0) :

Рассмотрим реальный URI, который называет ресурс в жанре «каталог ресурсов о медуза »: http://www.google.com/search?q=jellyfish. Этот поиск медузы так же, как реальный URI как http://www.google.com. Если HTTP не был адресуем, или если Google поисковая система не была адресуемым веб-приложением, я не смог бы опубликовать это URI в книге. Я должен сказать вам: «Откройте веб-соединение с google.com, введите« jellyfish » в поле поиска и нажмите кнопку "Поиск Google".

Это не академическое беспокойство. До середины 1990-х годов, когда ftp: // URI стал популярным для описания файлов на FTP сайтах, людям приходилось писать например: «Начать анонимный сеанс FTP на ftp.example.com. затем перейдите в каталог pub / files / и загрузите файл file.txt. FTP так же адресуем, как и HTTP. Теперь люди просто пишут: «Скачайте ftp: // ftp.example.com/pub/files/file.txt. »Шаги такие же, но теперь они может быть осуществлено на машине.

[...]

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

2) В чем преимущество адресности?

Гораздо проще следовать предоставленным сервером URI, чем создавать их самостоятельно. Это особенно верно, поскольку ресурсные отношения становятся слишком сложными, чтобы быть выраженными в простых правилах. Легче один раз закодировать логику на сервере, чем повторно реализовать ее на многочисленных клиентах.

Отношение между ресурсами может измениться, даже если отдельные URI ресурса остаются неизменными. Например, если Google Maps изменит масштаб своих плиток карты, клиенты, которые рассчитывают относительные положения плиток, сломаются.

3) В чем преимущество URI перед пользовательскими идентификаторами?

Пользовательские идентификаторы уникально идентифицируют ресурс. URI идут дальше, сообщая вам, где их найти. Это упрощает логику клиента.

0 голосов
/ 29 сентября 2008

Оба URI действительны с точки зрения REST, однако просто поймите, что веб-кэши обрабатывают параметры строки запроса очень по-разному.
Если вы хотите использовать кэширование в своих интересах, я предлагаю не использовать параметр строки запроса для идентификации вашего ресурса.

0 голосов
/ 29 сентября 2008

Как упоминал Олафур, ясность первого URL-адреса - одно из преимуществ.

Другим является гибкость реализации.

Допустим, ученик 5 меняется нечасто. Если вы используете URL-адрес в стиле REST, у вас есть возможность обслуживать статический файл вместо запуска кода. В Rails распространено, что первый запрос студентов / 5 создаст кэшированный html-файл в корневом каталоге вашего сайта. Этот файл используется для обслуживания последующих запросов без касания бэкэнда. Естественно, в этом подходе нет ничего конкретного.

Более поздний URL этого не допустит. Вы не можете иметь переменные URL (?, =) В именах статических страниц.

0 голосов
/ 29 сентября 2008

Я думаю, все сводится к тому, насколько близко вы хотите придерживаться принципов фэн-шуй.

0 голосов
/ 29 сентября 2008

Первый - более эстетичный.

Технически нет никакой разницы, но используйте первое, когда можете.

0 голосов
/ 29 сентября 2008

Поисковая оптимизация в основном.

Это также облегчает их запоминание и делает его более профессиональным на мой взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...