Это плохой REST URL? - PullRequest
       8

Это плохой REST URL?

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

Я только что прочитал о URL REST и увидел следующий пример:

/ API / Пользователь / GetUser

Теперь, если к нему обращаются через HTTP с глаголом GET, не является ли это плохим URL, потому что он описывает действие (GET) в URL?

Ответы [ 5 ]

9 голосов
/ 05 февраля 2010

Это скорее соглашение, чем жесткое правило, но я бы предпочел что-то вроде /API/User/7123. GET / POST / etc описывает глагол действия, поэтому добавление его в URL делает его избыточным. И в этой ситуации нет причин не следовать хорошим проверенным методам.

Вот несколько полезных вещей: Понимание REST: глаголы, коды ошибок и аутентификация

5 голосов
/ 05 февраля 2010

Нет такой вещи как REST URL . На самом деле, слово REST URL в значительной степени оксюморон. Ограничение Hypermedia As Engine of State гарантирует, что URL-адреса не имеют значения: в любом случае, вы только переходите по ссылкам, предоставленным вам сервером. Вы нигде не видите, не читаете и не вводите URI. (Точно так же, как в Интернете: вы не смотрите URL-адрес ссылки, не читаете ее, не запоминаете и не вводите ее в адресную строку; вы просто нажимаете на нее, и вам все равно, что она на самом деле говорит.)

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

[Примечание: правильный дизайн URI очень важен для URI-сущности URI, особенно для части I . Кроме того, есть множество хороших юзабилити причин для красивых URL. Но оба они не имеют ничего общего с REST.]

5 голосов
/ 05 февраля 2010

Лучше было бы иметь / API / User / 7123 и использовать метод GET / POST для обозначения операций

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

Это не обязательно плохо ... это больше связано с фреймворком, который вы используете для генерации ваших остальных URL. Опубликованная ссылка @Infinity является хорошим ресурсом, но не ограничивайте себя теорией множеств, поскольку она может вызвать чрезмерное количество работы в определенных рамках.

Например, нет причины, по которой вы не захотите запускать GET для / API / Users / {id} / Delete, чтобы отобразить тип сообщения «Вы уверены» перед использованием метода DELETE.

1 голос
/ 27 августа 2012

/API/User/GetUser не RESTful. Использование глагола для определения ресурса не очень хорошая вещь. URL-адрес примера все еще действителен, но это также не делает его правильным. Это так же неправильно, как следующая декларация

String phoneNumber = "jhon@gmail.com";
...