If all you need is a GraphQL endpoint, then using the standalone library (apollo-server
) is generally preferred because there will be less boilerplate to write (features like subscriptions, file uploads, etc. just work without additional configuration). However, many applications require additional functionality beyond just exposing a single API endpoint. Examples include:
- Webhooks
- OAuth callbacks
- Session management
- Cookie parsing
- CSRF protection
- Monitoring or logging requests
- Rate limiting
- Geofencing
- Serving static content
- Server-side rendering
If you need this sort of functionality for your application, then you'll want to utilize an HTTP framework like Express and then use the appropriate integration library (i.e. apollo-server-express
).
Apollo Server also includes integrations for serverless solutions AWS Lambda. If you want to go serverless to, for example, get better scalability or eliminate system admin costs, then you would also need to use one of these integrations.