В чем преимущество глобальных URI ресурсов (т.адресность)?

StackOverflow https://stackoverflow.com/questions/147172

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Например:

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

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

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

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

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

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

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

Это было полезно?

Решение 2

Отвечу себе на вопрос:

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

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

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

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

[...]

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

Другое дело — гибкость реализации.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top