Подтвердить что ты не робот

Что меня использует URL-адрес RESTful?

Я читал REST, и я пытаюсь понять, какие преимущества его использовать. В частности, каково преимущество URL-адресов в стиле REST, которые заставляют их выполнять более типичный запрос GET с помощью строки запроса?

Почему этот URL-адрес:

    http://www.parts-depot.com/parts/getPart?id=00345

Считается хуже этого?

    http://www.parts-depot.com/parts/00345

В приведенных выше примерах (взятых из здесь), второй URL-адрес действительно более элегантный и краткий. Но он стоит дорого... первый URL-адрес довольно легко реализовать на любом веб-языке, из коробки. Второй требует дополнительной конфигурации кода и/или сервера для анализа значений, а также дополнительной документации и времени, затраченного на объяснение системы младшим программистам и обоснование ее сверстниками.

Итак, мой вопрос заключается в том, что, помимо удовольствия от URL-адресов, которые выглядят круто, какие преимущества у меня получат URL RESTful, которые сделают их полезными для реализации?

4b9b3361

Ответ 1

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

Реальность заключается в том, что содержимое URL-адреса совершенно не имеет отношения к системе RESTful. Это просто идентификатор.

Это не то, на что похоже, это то, что вы делаете с этим, что важно.

Ответ 2

Один из способов поиска REST:

http://tomayko.com/writings/rest-to-my-wife (который теперь снят, к сожалению, но все еще можно увидеть на web.archive.org)

Так или иначе, HTTP-этот протокол Fielding и его друзья создали - все о применение глаголов к существительным. Например, когда вы переходите на веб-страницу, браузер делает HTTP GET на указанном вами URL-адресе и обратно появляется веб-страница.

...

Вместо этого подавляющее большинство занято написание слоев комплекса спецификации для этого другой способ, который не такой, как полезный или красноречивый. Существительные arent универсальный и глагол arent полиморфный. Выкинули десятилетия реального использования месторождения и доказанных техники и начиная с что-то похожее на другие систем, которые потерпели неудачу в прошлом. Использовали HTTP, но только потому, что он помогает нам разговаривать с нашей сетью и люди безопасности меньше. Были торговые простота для кричащих инструментов и волшебники.

Ответ 3

Одна вещь, которая выскакивает на меня (хороший вопрос кстати) - это то, что они описывают. Первая описывает операцию (getPart), вторая описывает ресурс (часть 00345).

Кроме того, возможно, вы не могли использовать другие HTTP-глаголы с первым - вам нужен новый метод для putPart, например. Второй может быть повторно использован с разными глаголами (например, PUT, DELETE, POST), чтобы "манипулировать" ресурсом? Я полагаю, вы также говорите GET дважды - один раз с глаголом, снова в методе, так что второй более соответствует намерению протокола HTTP?

Ответ 4

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

Ответ 5

Самое большое преимущество REST IMO заключается в том, что он позволяет использовать HTTP-глаголы (которые наиболее важны для служб REST). Фактически, использование REST означает, что вы используете протокол HTTP и его глаголы.

Используя ваши URL-адреса и воображая, что вы хотите опубликовать "часть", вместо того, чтобы получать ее

Первый случай должен быть следующим:

Вы используете GET, где вы должны использовать сообщение

http://www.parts-depot.com/parts/postPart?param1=lalala&param2=lelele&param3=lilili

В контексте REST это должно быть

http://www.parts-depot.com/parts

и на теле (например) xml, подобный этому

<part>
   <param1>lalala<param1>
   <param2>lelele<param1>
   <param3>lilili<param1>
</part>

Ответ 6

Семантика URI определяется RFC 2396. Выдержки, особенно относящиеся к этому вопросу, являются 3.3. "Компонент пути":

Компонент пути содержит данные, относящиеся к полномочию (или    схема, если нет компонента полномочий), идентифицируя ресурс    в рамках этой схемы и полномочий.

И 3.4 "Компонент запроса":

Компонент запроса представляет собой строку информации, которая должна интерпретироваться    ресурс.

Обратите внимание, что компонент запроса не является частью идентификатора ресурса, это просто информация, которую должен интерпретировать ресурс.

Таким образом, ресурс, идентифицируемый вашим первым примером, на самом деле просто /parts/getPart. Если ваше намерение состоит в том, что URL-адрес должен идентифицировать один конкретный ресурс детали, тогда первый пример этого не делает, тогда как второй (/parts/00345) делает.

Таким образом, "преимущество" второго стиля URL-адреса заключается в том, что оно семантически корректно, а первое - нет.

Ответ 7

"Второй требует дополнительного кода и/или конфигурации сервера для анализа out",

Действительно? Тогда вы выбираете плохую структуру. Мой опыт в том, что версия RESTful представляет собой точно такое же количество кода. Может быть, мне просто повезло в классную рамку.

", а также дополнительную документацию и время, затрачиваемое на объяснение системы младшим программистам"

Только один раз. После того, как они получат это, вам не придется снова объяснять это.

"и оправдывая это сверстниками.

Только один раз. После того, как они получат это, вам не придется снова объяснять это.

Ответ 8

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

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