Nesse tópico falarei especificamente sobre HATEOAS, HATEOAS é uma sigla para Hypermedia as the Engine of Application State, isto é uma constante arquitetural de aplicações REST.
Uma API HATEOAS provê informações que permite navegar entre seus componentes de forma dinâmica visto que inclui links junto às respostas.
Na prática a API provê as informações que os consumers ou clients irão precisar para dar os próximos passos. Tenha em mente o exemplo que citei no post Níveis de Maturidade de Richardson falando sobre acesso à Wikipédia.
Imagine uma pesquisa sobre REST que me retorna uma página sobre o tema e destaca os links para informações relacionadas como JSON, XML, etc. Esses links me permitem e o próximo passo.
A mesma ideia se aplica a uma API, imagine que recuperamos as informações de uma pessoa no servidor, junto com os dados a API nos retorna também links que me possibilitam conhecer os próximos recursos, como link para o endpoint de um novo cadastro, link para a atualização desse registro, link para a deleção desse registro etc. Enfim ele me dá o próximo passo, me os links que muito provavelmente eu vou acessar depois de chegar no recurso.
{
"account": {
"account_number": 12345,
"balance": {
"currency": "usd",
"value": 100.00
},
"links": {
"deposits": "/accounts/12345/deposits",
"withdrawals": "/accounts/12345/withdrawals",
"transfers": "/accounts/12345/transfers",
"close-requests": "/accounts/12345/close-requests"
}
}
}
Essa abordagem facilita bastante a vida dos desenvolvedores e todo o processo de integração.
Eles vão saber exatamente o que a sua API permite executar.
Vou deixar também alguns links para você se aprofundar ainda mais sobre este assunto:
- http://restcookbook.com/Basics/hateoas/
- https://nordicapis.com/tools-to-make-hateoas-compliance-easier/
- http://www.semeru.com.br/blog/en/