Converts almost any Google Data API to a GraphQL API via the Google API Discovery Service
Limitations
- Read only
- No downloading (think Drive documents ... )
Full list of APIs and their require()
path
npm i gapi-to-graphql --save
index.mjs
import { gql, ApolloServer } from 'apollo-server'
import gapiToGraphQL from 'gapi-to-graphql'
import YouTubeAPI from 'gapi-to-graphql/google_apis/youtube-v3'
const { schema, resolvers } = gapiToGraphQL({ gapiAsJsonSchema: YouTubeAPI })
const server = new ApolloServer({
typeDefs: gql`
${schema}
`,
resolvers
})
server.listen({ port: 3031 }).then(({ url }) => {
console.log(`🚀 Server ready at ${url}`)
})
Run example with
node --experimental-modules index.mjs
{
YoutubeApi(key: "YOUR_API_KEY") {
search {
list(q: "graphql", part: "snippet") {
items {
id {
videoId
}
snippet {
title
thumbnails {
default {
url
}
}
}
}
}
}
}
}
temporarily down. Going to redploy to Heroku Soon!
GitHub: https://github.com/rlancer/yt-gql-example
UI: https://youtube-gql-example.appspot.com/
GraphiQL: https://youtube-gql-example.appspot.com/graphql
GraphiQL with a query: URL too long!
Should this API be exposed to web clients
Yes, but be sure to add API keys and sanitize other parameters via a middleware solution like https://www.npmjs.com/package/graphql-add-middleware
Can I use this in production
Yes, since all its doing is making API calls it's fairly safe to use in production if your use cases have been well tested in development.
Pull requests welcome! Join the project on Collaborizm
gapi-to-graphql is MIT licensed.