означает ли обнаружение REST и HATEOAS, что вы можете изменить URI? - PullRequest
9 голосов
/ 13 ноября 2011

Я пытаюсь прояснить концепцию, связанную с возможностью обнаружения REST - то есть, удовлетворяет ли ограничение HATEOAS для службы RESTful, означает, что теперь URI могут изменяться, потому что они обнаруживаемы и не документированы.

Это, кажется, не соответствует концепции Прохладных URI - факта, что URI никогда не меняются. Это также несколько не согласуется с моделью самого Интернета (который REST должен по существу соответствовать) - тот факт, что URL-адреса являются закладками и никогда не меняются, и тот факт, что когда вы изучаете один, вы можете перейти непосредственно к нему, и вы делаете Не надо проходить рут и открывать его каждый раз.

Любая обратная связь приветствуется.

Ответы [ 2 ]

6 голосов
/ 13 ноября 2011

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

Для любых неохладимых URI они могут действительно меняться со временем . Недавно я написал сообщение в блоге на эту тему, потому что я считаю, что способность REST, позволяющая мне со временем развивать свою систему, невероятно полезна.

Убедитесь, что в вашей документации API прописан тот факт, что только несколько Прохладных URI в вашей системе должны быть жестко запрограммированы клиентами, и любой другой URI должен быть обнаружен во время выполнения через обход гипермедиа. Думайте о них как об адресе указателя C: никого не волнует, что такое шестнадцатеричное значение переменной указателя, но они уверены, что, черт возьми, они захотят, чтобы он указывал на допустимое место в памяти. То же самое относится и к вашим не прохладным URI - их структура не имеет значения, но тот факт, что они были получены во время выполнения посредством разговоров с вашим сервером, делает их действительными.

0 голосов
/ 14 ноября 2011

Должна быть документация.MediaTypes и Link Relations являются точкой соединения, и клиент, и сервер должны это понимать.Вот почему HTML, ATOM и RSS имеют стандарты.

С точки зрения функционирования во время выполнения я вижу отсутствие документации.Мне не нужно знать, что Yahoo имеет на своей домашней странице, потому что я могу это обнаружить.Так же, как клиент моего сервиса не должен знать о новой функции, которую я выпускаю.Они могут найти, что ссылка существует, и затем использовать отношение ссылки, чтобы увидеть, что она делает.

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

...