> Sincere question: how does HATEOAS helps with this?
HATEOAS basically involves two main things:
1. Resource representation specifications are communicated in the communication channel (in HTTP, this can be a combination of MIME type in headers are more specific specification in the document itself for responses, and accepts header in requests.)
2. Related resources are identified by URL.
> The only thing that HATEOAS helps with, is when the URL pointing to an entity changes
False, though #2 helps with that.
> But if an API ever changes the relationships between entities (new entities, 1-1 relationship changed to a 1-m relationship, ...) then HATEOAS won't help at all.
No, that's what #1 helps with, as it provides the means where you can:
(1) identify the resource representations available,
(2) identify if you have a resource-consumption/creation-client available that satisfies the endpoint requirements, and
(3) select the correct client implementation.
> You'll still need to change the logic of your client to take into account the modifications.
Yes, someone needs to implement a new resource client if a new resource structure, or representation of the same structure, is developed.
And if you are doing a single, centralized API, where no one else will be hosting something using the same resources, REST doesn't provide much. Where REST shines (which is why it is abundantly used on the web) is where large numbers of different parties will be hosting services using a potentially shared set of resource representations, where each hosts may evolve the particular set in use on their own schedule, and perhaps even using different network protocols, and you don't want to have bespoke clients for each service, but instead protocol clients for each network protocol and resource clients for each resource representation, and in-band signalling of not only where to get each resource once you get to an entry point, but also have the network protocol client you need and the resource client you need to successfully carry out each transaction.