Python ariadne: Difference between revisions

From wikinotes
Line 59: Line 59:
     -d '{"query": "query { hello }"}' \
     -d '{"query": "query { hello }"}' \
     http://127.0.0.1:8000
     http://127.0.0.1:8000
</syntaxhighlight>
Or, Use Interactive Editor
<syntaxhighlight lang="bash">
firefox http://127.0.0.1:8000
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Example -->
</blockquote><!-- Example -->

Revision as of 12:58, 4 September 2021

A schema-first approach to building graphql APIs in python.

Documentation

official docs https://ariadnegraphql.org/docs/intro

Example

Define GraphQL API

#!/usr/bin/env python
# ${PROJECT}/app.py

import ariadne
from ariadne import asgi


# Your GraphQL SDL Schema
type_defs = ariadne.gql("""
    type Query {
        hello: String!
    }
""")

# Resolvers for Query 'hello'
query = ariadne.QueryType()

@query.field("hello")
def resolve_hello(parent, info):
    request = info.context["request"]
    user_agent = request.headers.get("user-agent", "guest")
    return "Hello, %s!" % user_agent

# Build Schema, and create app
schema = ariadne.make_executable_schema(type_defs, query)
graphql_app = asgi.GraphQL(schema, debug=True)

Expose GraphQL API

# run server
pip install ariadne
pip install uvicorn

uvicorn app:graphql_app

Execute API query

# execute graphql query
curl -X POST \
    -H 'Content-Type: application/json' \
    -d '{"query": "query { hello }"}' \
    http://127.0.0.1:8000

Or, Use Interactive Editor

firefox http://127.0.0.1:8000