A new GraphQL library for Python 🍓
Python GraphQL library based on dataclasses
The quick start method provides a server and CLI to get going quickly. Install with:
pip install strawberry-graphql[debug-server]
Create a file called
app.pywith the following code:
@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
Usertype and a single query field
userthat 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: http://0.0.0.0:8000/graphql
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.
INSTALLED_APPS = [ ... 'strawberry.django', ]
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 following command:
The code in this project is licensed under MIT license. See LICENSE for more information.