Access all your data through a single API
All your services are connected to a single GraphQL schema, so you can easily Query and Join data across all of them, just by writing a GraphQL Operation.
- Unified GraphQL Schema across all data sources
- A single pane of glass for all your data
- Unified Security, Authentication, & Authorization
- 10x easier integrations
A Workflow built for Developers
Legacy API Management solutions are built for Ops people. WunderGraph is built for Developers, and fits perfectly into their existing workflows.
- No dashboards for configuration
- No Gateways to worry about
- Configure everything with TypeScript
- Build upon standards like OAuth2, OpenAPI, S3, GraphQL
Declarative API Dependencies
Stop the chaos of implicitly calling APIs from your code. WunderGraph's declarative API Layer allows you to manage API dependencies like npm packages.
- Auto generate custom type-safe API Clients
- Know exactly what services your app depends on
- Manage secrets and credentials in a single place
- Publish and import APIs like npm packages
The fundamental difference of server-side compile-time GraphQL
Listen to Jack Herrington's talk on the fundamental difference of server-side-only vs. client-side GraphQL and what advantages it brings to your application architecture in terms of security and performance.
Jack is not affiliated with us. He's an amazing presenter who simply loves what we do. We highly recommend his other videos, please check out his channel!
How WunderGraph works
Configure your API dependencies
WunderGraph has the concept of declarative API Dependencies. As a first step, we'll use GraphQL introspection to add the SpaceX API to our application.
- ├── operations/
- │ └── # Your operation
- ├── # Primary configuration file
- ├── # Optional
- ├── # Optional
- └── generated/
- ├── # Gateway configuration
- ├── # Composed GraphQL Schema
- ├── # Postman Integration
- ├── # TypeSafe Models
- └── # Validation and more
Configure your first Operation / Endpoint
WunderGraph uses file-based routing, similar to Next.js, to define your API Endpoints.
To define your first Operation, create a new file in the
.wundergraph/operations/ folder and add a GraphQL Operation.
Call your API via the generated JSON-RPC Endpoint
Once you saved your first Operation, you can call it via the generated JSON-RPC Endpoint.
That's it, you've created your first WunderGraph API Endpoint!
- We're not exposing GraphQL anymore
- You can call this API using curl or Postman
- The attack surface of the API is reduced
- We're sending less data between client and server
- The resulting API is more performant
- The resulting API supports HTTP-Layer Caching
Frequently Asked Questions
We've heard a lot of questions about WunderGraph. These are the questions we get most often.
What problem is WunderGraph solving?Every application requires a unique composition of internal and external APIs, Databases, file storages and auth providers that need to be enriched with custom Middleware and connected to one or more frontend / client applications. WunderGraph builds on top of open Standards like OpenAPI, OpenID Connect, GraphQL, S3 and more to make building and maintaining such compositions as easy to build as possible.
How is WunderGraph faster and more secure than other GraphQL solutions?GraphQL is an excellent language for API Compositions, but comes with challenges regarding security and performance. We've realized that GraphQL Operations don't change in production, so we've built a GraphQL to JSON-Schema Compiler. This approach turns GraphQL into a compile time problem and removes it from the runtime. This gives you powerful API compositions without the drawbacks of exposing a GraphQL API.
How is the WunderGraph Developer Experience different from legacy GraphQL?The DX is actually almost the same. You compose a GraphQL Schema by adding your API Dependencies, and write GraphQL Operations like you always did. WunderGraph automatically compiles your Operations into JSON-RPC and generates a TypeSafe client for you, e.g. with React Hooks & SSR for NextJS. The generated Hooks execute your GraphQL Operations on the server, that's it.
How is Server-Side Only GraphQL different from client-side GraphQL?Legacy GraphQL Clients send GraphQL Operations as JSON objects via HTTP POST to the server. This approach is not able to leverage HTTP Caching or ETags. Server-Side Only GraphQL turns GraphQL Operations into JSON-RPC GET Endpoints at compile time. This reduces payloads and latency, makes the API more secure and you're able to leverage HTTP Caching and ETags for Queries.