En este artículo se toca el uso de GraphQL para crear un API. GraphQL es un lenguaje de consulta de datos desarrollado por Facebook, es una alternativa a Rest (más información en wikipedia).
La librería para Flask de GraphQL lo pueden ver en el siguiente enlace. El artículo explicará el ejemplo que aparece en la página oficial de graphQL para Flask.
Instalación:
#pip3 install flask
Script
#! /usr/bin/env python3
#Se importa flask, graphene y graphql .
from flask import Flask
from graphene import ObjectType, String, Schema
from flask_graphql import GraphQLView
#Se crea la clase Query que hereda de graphene ObjectType.
class Query( ObjectType):
#Se define la descripcion
hello = String( description='Hello')
#Se define la funcion resolve_hello, se le pasa args, context e info.
def resolve_hello( self, args , context, info):
return 'World'
#Se define la funcion de la vista.
#que se le pasa el esquema con la clase Query.
view_func = GraphQLView. as_view( 'graphql ', schema=Schema( query=Query))
#Se crea la app como instancia de la clase Flask.
app = Flask( __name__)
#Se define el url donde se le pasa la funcion de la vista
app . add_url_rule( '/', view_func=view_func)
if _ _name__ == '_ _main__':
#Se ejecuta flask.
app . run( )
Al ejecutar el script:
Se consulta usando curl:
curl -H 'Content-type: application/graphql ' -d '{hello}' http://localhost:5000/
Yeste devuelve :
{"data ": {"hello":"World"}}
Se ejecuta el script:
python3cliente . py
{"hello ": "World"}
Y
{"
Desde un script en python:
Instalación de librerías necesarias:
#pip3 install gql requests
El script cliente . py :
#! /usr/bin/env python3
#Se importa json
import json
#se importa ggl
from gql import gql , Client
from gql . transport. requests import RequestsHTTPTransport
#Se define el transport, se conecta el cliente.
transport = RequestsHTTPTransport( 'http: //localhost : 5000/')
client = Client( transport=transport)
#Se realiza una consulta buscando la variable hello
response = client. execute( gql ( '{hello}'))
#muestra en pantal la la re spu e sta como un json.
print ( json . dumps( response))
python3
{"
En futuros artículos se ampliará el uso de GraphQL.