GraphQL APIs
have a rich query language that you use in your front end to send through requests to the backend which is then parsed on the back end and dynamically retrieves just the data you need.
npm install --save graphql express-graphql
input validator
npm install --save validator
upload images
Cleanest solutions is to use a REST endpoint where you send your image to and then let that endpoint store the image and return the path to the image and then send another request with that path to the image and your other data to your graphql endpoint.