Eu acho que seus instintos estão corretos; esses benefícios proclamados realmente não são tão bons assim, como para qualquer aplicativo da Web não trivial, os clientes precisarão se preocupar com a semântica do que estão fazendo, bem como com a sintaxe.
Mas isso não significa que você não deve fazer sua inscrição seguir os princípios da HATEOAS!
O que HATEOAS realmente significa? Isso significa estruturar seu aplicativo para que seja, em princípio, semelhante a um site e que todas as operações desejadas possam ser descobertas sem precisar fazer download de algum esquema complexo . (Esquemas WSDL sofisticados podem cobrir tudo, mas quando chegam, excedem a capacidade de praticamente todos os programadores entenderem, quanto mais escrever! Você pode ver HATEOAS como uma reação contra tal complexidade.)
HATEOAS não significa apenas links ricos. Significa usar os mecanismos de erro do padrão HTTP para indicar mais exatamente o que deu errado; você não precisa apenas responder com "waaah! não ”e pode, em vez disso, fornecer um documento descrevendo o que estava realmente errado e o que o cliente poderia fazer a respeito. Isso também significa dar suporte a itens como solicitações de OPÇÕES ( a maneira padrão de permitir que os clientes descubram quais métodos de HTTP eles podem usar) e negociação de tipo de conteúdo para que o formato da resposta possa ser adaptado a um formulário que os clientes possam manipular. Isso significa colocar texto explicativo (ou, mais provavelmente, links para ele) para que os clientes possam procurar como usar o sistema em casos não-triviais se não souberem; o texto explicativo pode ser legível por humanos ou pode ser legível por máquina (e pode ser tão complexo quanto você quiser). Finalmente, isso significa que clientes não sintetizam links (exceto para parâmetros de consulta); os clientes só usarão um link se você contasse para eles.
Você precisa pensar em ter o site visitado por um usuário (que pode ler JSON ou XML em vez de HTML, portanto, um pouco estranho) com uma excelente memória para links e um conhecimento enciclopédico do Padrões HTTP, mas sem o conhecimento do que fazer.
E, claro, você pode usar a negociação de tipo de conteúdo para servir um cliente HTML (5) / JS que permitirá que eles usem seu aplicativo, se é isso que o navegador está preparado para aceitar. Afinal, se a sua API RESTful é boa, isso deve ser “trivial” para implementar em cima dela?