Python GraphQL library based on dataclasses.
Installation ( Quick Start )
The quick start method provides a server and CLI to get going quickly.
pip install strawberry-graphql[debug-server]
Create a file called
app.py with the following code:
import strawberry @strawberry.type class User: name: str age: int @strawberry.type class Query: @strawberry.field def user(self, info) -> User: return User(name="Patrick", age=100) schema = strawberry.Schema(query=Query)
This will create a GraphQL schema defining a
User type and a single query
user that will return a hardcoded user.
To run the debug server run the following command:
strawberry server app
Open the debug server by clicking on the following link:
This will open GraphiQL where you can test the API.
Strawberry comes with a mypy plugin that enables statically type-checking your
GraphQL schema. To enable it, add the following lines to your
[mypy] plugins = strawberry.ext.mypy_plugin
A Django view is provided for adding a GraphQL endpoint to your application.
- Add the app to your
INSTALLED_APPS = [ ... 'strawberry.django', ]
- Add the view to your
from strawberry.django.views import GraphQLView from .schema import schema urlpatterns = [ ..., path('graphql', GraphQLView.as_view(schema=schema)), ]
To support graphql Subscriptions over WebSockets you need to provide a WebSocket
enabled server. The debug server can be made to support WebSockets with these commands:
pip install strawberry-graphql[debug-server] pip install uvicorn[standard]
We use poetry to manage dependencies, to
get started follow these steps:
git clone https://github.com/strawberry-graphql/strawberry cd strawberry poetry install poetry run pytest
This will install all the dependencies (including dev ones) and run the tests.
We have a configuration for
pre-commit, to add the hook run the