Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rlancer/gapi-to-graphql
Converts any Google Data Api to GraphQL
https://github.com/rlancer/gapi-to-graphql
google-api graphql javascript nodejs
Last synced: 18 days ago
JSON representation
Converts any Google Data Api to GraphQL
- Host: GitHub
- URL: https://github.com/rlancer/gapi-to-graphql
- Owner: rlancer
- Created: 2017-10-25T01:57:30.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-03-29T19:05:00.000Z (9 months ago)
- Last Synced: 2024-12-06T01:23:02.096Z (about 1 month ago)
- Topics: google-api, graphql, javascript, nodejs
- Language: TypeScript
- Homepage: https://www.collaborizm.com/project/Skkk3bBA-
- Size: 8.49 MB
- Stars: 83
- Watchers: 6
- Forks: 5
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![npm version](https://badge.fury.io/js/graphql-add-middleware.svg)](https://badge.fury.io/js/gapi-to-graphql)
# Gapi to GraphQL
Converts almost any Google Data API to a GraphQL API via the [Google API Discovery Service](https://developers.google.com/discovery/)
**Limitations**
- Read only
- No downloading (think Drive documents ... )## Supports 138 Google APIs!
[Full list of APIs and their `require()` path](/docs/GoogleAPIs.md)
## Usage
```bash
npm i gapi-to-graphql --save
```## Example on the server
> index.mjs
```javascript
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`
## Query usage
```graphql
{
YoutubeApi(key: "YOUR_API_KEY") {
search {
list(q: "graphql", part: "snippet") {
items {
id {
videoId
}
snippet {
title
thumbnails {
default {
url
}
}
}
}
}
}
}
}
```## Live example YouTube Hunt (Client and Server)
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!]()
![youtubehunt](https://user-images.githubusercontent.com/1339007/34919957-f4649db6-f938-11e7-8ef6-b7aa2889dc49.png)
## FAQ
**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.
## Contributors
Pull requests welcome!
Join the [project on Collaborizm](https://www.collaborizm.com/project/Skkk3bBA-)## License
gapi-to-graphql is MIT licensed.