Welcome to Olympus
Olympus is a hybrid caching library for GraphQL written for Javascript Express
- Automatically creates and caches GraphQL queries.
- Integrates with any server running on Express/Node.js.
- Includes caching with Redis and in the browser's local storage.
Check out our demo site to see what Olympus can do.
Install our Express library via npm
npm install olympus-cache
- Import our Redis Middleware
const RedisCache = require('olympus-server');
- Set up your Redis Server
const redis = require('redis');
const redisClient = redis.createClient({
host: "localhost",
port: 6379,
});
redisClient.connect();
const redisInstance = new RedisCache(redisClient, '//insert url with /graphql endpoint here');
// REQUIRED
app.use(express.json())
app.use(express.urlencoded({ extended: true }));
- Add the following endpoints
app.use('/olympus', redisInstance.cacheResponse, (req, res) => {
res.status(200).send(res.locals)
});
app.use('/graphql', graphqlHTTP({schema, graphiql: true}));
- Don't forget to run the command line 'redis-server' on the machine with your server
- Import
Olympus
in files that make GraphQL queries
import { Olympus } from 'olympus-fetch';
- Olympus is designed to make it easy to switch over from the Fetch API. All you have to do is replace the word
fetch
with the wordOlympus
. Remove the endpoint argument, and adjust the 'body' key inside the second arugment.
For example, here's how you might send a GraphQL request using the Fetch API:
fetch('/graphql', {
method: 'POST',
headers: { 'Content-Type': 'application/graphql' },
body: // query string
})
.then(/* code */)
And here's what that same request looks like using Olympus:
Olympus({
method: 'POST',
headers: { 'Content-Type': 'application/graphql' },
body: JSON.stringify({query: // query string})
})
.then(/* code */)
Simply replace fetch
with Olympus
wherever the client-side code queries the GraphQL API, and you're done! You've set up caching inside your client's browser Local Storage.
In order to make a mutation, follow the same steps above. Simply replace fetch
with Olympus
wherever the client-side code makes mutations using the GraphQL API, and you're done! Simply enter your string containing the mutation inside of the key "query".
Olympus({
method: 'POST',
headers: { 'Content-Type': 'application/graphql' },
body: JSON.stringify({query: // mutation string})
})
.then(/* code */)
Adam Lang | GitHub | LinkedIn
Bryan Kim | GitHub | LinkedIn
Kevin Le | GitHub | LinkedIn
Marshall Kim | GitHub | LinkedIn
This product is licensed under the MIT License - see the LICENSE file for details.
This is an open source product.
This product is accelerated by OS Labs.