A library for creating GraphQL APIs
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.py with the following code:
import strawberry
@strawberry.type
class User:
    name: str
    age: int
@strawberry.type
class Query:
    @strawberry.field
    def user(self) -> 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
field 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: 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.ini
configuration:
[mypy]
plugins = strawberry.ext.mypy_plugin
A Django view is provided for adding a GraphQL endpoint to your application.
INSTALLED_APPS.INSTALLED_APPS = [
    ...,  # your other apps
    "strawberry.django",
]
urls.py file.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 --with integrations
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:
pre-commit install
The code in this project is licensed under MIT license. See LICENSE for more information.