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[cli]"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 serve the schema using the dev server run the following command:
strawberry dev appOpen the dev 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_pluginA Django view is provided for adding a GraphQL endpoint to your application.
- Add the app to your
INSTALLED_APPS.
INSTALLED_APPS = [ ..., # your other apps "strawberry.django", ]- Add the view to your
urls.pyfile.
from strawberry.django.views import GraphQLView from .schema import schema urlpatterns = [ ..., path("graphql", GraphQLView.as_view(schema=schema)), ]- Various examples on how to use Strawberry
- Full stack example using Starlette, SQLAlchemy, Typescript codegen and Next.js
- Quart + Strawberry tutorial
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 pytestFor all further detail, check out the Contributing Page
We have a configuration for pre-commit, to add the hook run the following command:
pre-commit install- Project homepage: https://strawberry.rocks
- Repository: https://github.com/strawberry-graphql/strawberry
- Issue tracker: https://github.com/strawberry-graphql/strawberry/issues
- In case of sensitive bugs like security vulnerabilities, please contact patrick.arminio@gmail.com directly instead of using the issue tracker. We value your effort to improve the security and privacy of this project!
The code in this project is licensed under MIT license. See LICENSE for more information.
