API, не относящийся к HATEOAS, требует предварительного знания ресурсов и отношений между ними.
Например, если вы думаете об API-интерфейсе библиотеки, ресурс «книги» может иметь имя или идентификатор его автора в качестве атрибута. Чтобы получить дополнительную информацию об авторе, клиент API должен каким-то образом знать, что ресурс «автор» имеет конкретный контекстный путь и что его идентификатор является значением атрибута. Все становится еще сложнее, если клиент захочет заимствовать эту конкретную книгу. Для этого он должен знать, что необходимо выполнить POST-запрос, чтобы создать определенный ресурс с определенными атрибутами (например, идентификатор книги). Знание того, как делать такие вещи, должно быть жестко запрограммировано в реализации клиента. В HATEOAS каждая «книга» будет иметь ссылки на все связанные ресурсы, а также содержать информацию о действиях, связанных с этой книгой.
API-интерфейс клиентских споров PayPal может служить примером реального мира без API HATEOAS. Проверьте 'list disputes' part: он предоставляет список ресурсов с различными атрибутами. Затем см. the 'provide evidence' part. В нем говорится, что клиент может предоставить ресурс, связанный с спором. Это невозможно понять, просто следуя ссылкам в ресурсах API. Если это HATEOAS, тогда в ресурсе «спора» должна быть какая-то ссылка, которая передаст возможность добавления «доказательств» в каждый спор.Вы, как программист, должны прочитать документацию, чтобы знать, что «споры» могут иметь «доказательства».
Я действительно рекомендую this video как отличный учебный материал о том, что такое HATEOAS и как могут быть выражены отношения между ресурсами.
Клиент - программист/человек, а не программа, потому что программа не знает, что эти ссылки означают/представляют правильно? –
Нет, если ваш клиент (приложение) знает о спецификации ненависти, он может легко перемещаться по api, вот пример http://dracoblue.github.io/hateoas-browser/, сайт ничего не знает об api, но может перемещаться по api – shenku