You can wrap REST APIs with GraphQL. And yeah, as you you mention, caching is usually important in such scenarios. In JS there's
https://github.com/facebook/dataloader which help with the caching. I am using a Java implementation with Google's LoadingCache.