Я пытаюсь узнать, как лучше использовать REST API, я прочитал о HATEOAS, но не могу полностью понять всю его гибкость.Гибкость HATEOAS
Может кто-нибудь объяснить, почему он является гибким.
Позволяет рассматривать PayPal HATEOAS API
Вот пример массива ссылок
[
{
"href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
"rel":"self",
"method":"GET"
},
{
"href":"https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
"rel":"approval_url",
"method":"REDIRECT"
},
{
"href":"https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
"rel":"execute",
"method":"POST"
}
]
Я понимаю, что мы можем сделать запрос, например, в случае данного примера для платежной информации.
Есть некоторые вопросы
Почему мы должны
self
как типrel
, когда делается запрос приложением он уже знает полный URL этого ресурса, я прав? Почему мы должны дублировать его в массиве ссылок?Колесо гибкости? В этом примере есть три (два без self)
rel
типов. Как приложение знает все эти типы? Они должны быть жестко закодированы в коде и если, например, был введен новый типrel
, нам все равно нужно добавить логику в код клиента для обработки такого типаrel
, поэтому в результате нам нужно обрабатывать типыrel
или если ответы API не " Следуйте принципам написания логики HATEOAS, чтобы делать новые запросы.
Я не прав?
Пожалуйста, объясните основную идею этого. Я был бы признателен за любую помощь.
Спасибо.
Так или иначе мне нужно жестко кодировать типы 'rel' в клиентском приложении? Не только типы текста, но и логика их обработки? Почему мне нужно добавить логику для обработки типов 'rel', если я могу создать URL-адрес на основе базовых принципов REST (GET, POST, PUT, DELETE)? – CROSP
@CROSP Да, клиентам нужно было бы знать возможные «rel's», чтобы они могли работать на них. Использование 'rel' позволяет серверу изменять то, на что указывает URI 'rel'. Клиенты, использующие прямые URI, будут разбиты, если сервер решит изменить, какая конечная точка обслуживает определенный ресурс. –
Спасибо, я понял. – CROSP