Use GraphQL queries from REST services

I have installed the GraphQL plugin and I can successfully use the Playground frontend. The Strapi GraphQL docs don’t cover executing GraphQL queries from inside my REST services - is there a way to do this?
I want to use the power of GraphQL but driven by my own code in controllers and services. I don’t what the front-end app to have to talk to the GraphQL endpoint directly.
Or am I thinking about this in the wrong way?

Not really something I would suggest, the current GraphQL implementation (other than aggregations) uses the Strapi controllers in the backend, it just morphs the query params into a format that the controllers understand.

I’d suggest either:

@DMehaffy in which way a query performed with graphql is to be considered performance optimised compared to a REST one, if the same controller is in place?

Please pardon such a naive question. While defining what fields do I actually want in my frontend is surely to be more performant in terms of transport overhead, though it is still unclear for me, how the actual db query is affected.

There is an example: let’s say in a find() controller action I’m accessing all fields from a related entity, to make some sort of an aggregation. Now in a graphql query I’d like to get only related entity’s id. In my understanding no optimisation in querying a db will take place here.

Could you please elaborate on Strapi’s query optimisation mechanism, which takes place when graphql is in use – I could not find any insights on this one.

Thank you!

UPD: my concerns are briefly described here and related issues

In the v3 there is none really, in both REST and GraphQL we fetch everything from the database (effectively a select * from ....) but the v4 has changed this for both, see these RFCs: