I am far from a security expert so I couldn't elaborate on this in too much detail, but we changed our backend to use a single graphQL endpoint and wow, it is REALLY nice. The thing about it too is that you're literally only securing one endpoint. And the way we have it set up is you pass in a token with the header. If your token doesn't match the session token, then you can't access the endpoint. It doesn't matter where you are hitting it from (web on pc, web on mobile, mobile app, etc), if your token doesn't match, you're not accessing the endpoint.
So when I test it through postman, the mobile app, or graphiql (the graphQL test app), if that header isn't set, I get a forbidden response. if it's set to my valid token, it works.
I'd strongly recommend looking into graphQL for hitting a backend.