Header Ads Widget

Ticker

6/recent/ticker-posts

Haciendo su primera API en GraphQL


 Siga este tutorial para crear una API GraphQL simple

GraphQL es una forma interesante de diseñar una API. Fue desarrollado por Facebook en 2012 para desarrollo interno y se lanzó públicamente en 2015. GraphQL es un lenguaje de consulta para el desarrollo de API y es completamente de código abierto. GraphQL es una sintaxis que define cómo consulta datos de una manera mucho más flexible. Permite al cliente obtener los datos exactos que desea y hace que sea extremadamente fácil agregar los datos de diferentes puntos finales. Entonces, en otras palabras, podría decir que GraphQL es una forma simplificada de una API REST.

En las API REST, obtienes una URL, que devuelve una carga de datos JSON para ese recurso en particular. Por ejemplo, utilizando la API de YouTube, puede solicitar una lista de ID de video. Pero si quisiera información sobre cada video, tendría que llamar a la API repetidamente para cada ID. Ahora imagina que tienes miles de ID de video; tendrías que acceder a la API mil veces, ¿verdad? Con GraphQL, puede realizar acciones como esta en un solo viaje. Simplemente debe definir una consulta en la que está pasando la variable, y esa variable está vinculada a la identificación del video. Sencillo, ¿no?

Recuerde una cosa: GraphQL es una especificación, no una implementación. Puede utilizar GraphQL en cualquier plataforma. Tiene dos partes, el componente del servidor y el componente del cliente. Si una API tiene un servidor GraphQL, solo necesita un cliente GraphQL para usar esa API. No necesita aprender las cosas del lado del servidor. Pero si está creando aplicaciones de pila completa, también necesita una biblioteca de servidor. Si se dirige a su sitio web, verá que GraphQL admite muchos lenguajes de programación:

  • JavaScript
  • PHP
  • Vamos
  • Pitón
  • Java
  • Kotlin
  • C#
  • Rubí
  • Elixir
  • Oxido
  • Rápido
  • Scala
  • Aleteo
  • Clojure
  • C ++
  • Haskell
  • OLMO
  • 0Calma
  • Erlang
  • Groovy
  • R
  • Julia
  • Perl
  • re

Hasta ahora, hemos hablado mucho sobre GraphQL. Vamos a sumergirnos en la parte de codificación. A continuación, crearemos una API que acepta la URL de un sitio web y devuelve los datos como título, imagen y descripción. Usaremos Flask como servidor base para GraphQL y mapearemos el /punto final de raíz a GraphQL.

Prerrequisitos

  • Conocimientos básicos de Python

Paso 1: configuración del entorno

Ahora abra la terminal y cree un nuevo directorio:

mkdir graphql-flask

Y luego, cambie de directorio:

cd graphql-flask

Ahora, una vez que esté en la carpeta, tenemos que crear el entorno virtual. Entonces, inicialicemos uno:

virtualenv .

Para activar el entorno virtual, use el siguiente comando. (Usar source /bin/activateen caso de global venv).

source bin/activate

Ahora, instale los módulos:

 pip install extraction graphene flask-graphql requests

Aquí estamos instalando diferentes paquetes como grapheneuna biblioteca GraphQL que reduce la complejidad del servidor GraphQL al proporcionar funciones auxiliares. Lo estamos usando flaskcomo servidor y graphene-flaskayuda a conectar el servidor Flask con el servidor GraphQL.

Paso 2: Configuración del esquema GraphQL

Ahora es el momento de configurar GraphQL Schema. Entonces, cree un nuevo archivo schema.pyen el mismo graphql-flaskdirectorio y pegue el siguiente código:

import graphene
import extraction
import requests

def extract(url):
    html = requests.get(url).text
    extracted = extraction.Extractor().extract(html, source_url=url)
    print(extracted)
    return extracted

class Website(graphene.ObjectType):
    url = graphene.String(required=True)
    title = graphene.String()
    description = graphene.String()
    image = graphene.String()
    feed = graphene.String()

    
class Query(graphene.ObjectType):
    website = graphene.Field(Website, url=graphene.String())

    def resolve_website(self, info, url):
        extracted = extract(url)
        return Website(url=url,
                       title=extracted.title,
                       description=extracted.description,
                       image=extracted.image,
                       feed=extracted.feed
        )

schema = graphene.Schema(query=Query)

Explicación del código:

Estamos importando tres paquetes aquí: requestsextraction, y grapheneEl paquete de extracción aquí se utiliza para extraer los datos del sitio web. Estamos usando requestsaquí para que podamos recuperar la página HTML de la URL.

Hemos definido una función, extract()que acepta la URL y luego hace todo el procesamiento. También podemos utilizar BeautifulSouppara extraer datos de una página HTML.

Hemos definido dos clases WebsiteQueryLa clase Websitedevuelve los datos correctos de forma formateada, mientras que Queryse utiliza para resolver la consulta y devolver los datos al usuario.

Paso 3: Configuración del servidor para GraphQL:

Ahora, en este paso, definiremos nuestro servidor GraphQL. Cree un nuevo archivo server.pyen la misma carpeta y pegue el siguiente código:

from flask import Flask
from flask_graphql import GraphQLView
from schema import schema


app = Flask(__name__)
app.add_url_rule('/', view_func=GraphQLView.as_view('graphql', schema=schema, graphiql=True))
app.run()

Explicación del código:

Estamos configurando el servidor GraphQL aquí habilitando Graph i QL. Esto nos ayudará a ejecutar las consultas GraphQL. Lo estamos cargando en la ruta raíz del servidor.

Paso 4: ejecutar el servidor y probar la API:

Ahora hemos terminado con la parte de codificación. Así que ahora podemos seguir adelante con la parte de prueba. Podemos hacerlo ejecutando un comando simple:

python3 server.py

Ahora abra su navegador web y vaya a URL Verá una ventana Graph i QL vacía como esta:http://127.0.0.1:5000/

Ahora, para obtener datos de la API, pegue el siguiente código en el panel izquierdo:

{
  website(url: "https://wikipedia.org") {
    title
    image
    description
  }
}

¡¡Y obtendrás tu resultado !! Felicidades, ha creado con éxito la API GraphQL. Obtendrá algo como esto:

{
"data": { "website": { "title": "Wikipedia", "image": "https://wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png", "description": "Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation." } } }

Así es como se verá en su navegador:

Ultimas palabras

GraphQL es un lenguaje de consulta a diferencia de las API REST estándar; permite un excelente sistema de consulta relacional que le permitirá ahorrar viajes. Aparte de resolver el problema de la obtención excesiva frente a la obtención insuficiente, GraphQL no es muy diferente de las API REST. Aunque GraphQL proporciona muchas funcionalidades, la API REST todavía se prefiere sobre GraphQL. GraphQL es mejor para aplicaciones en tiempo real como aplicaciones de chat o transmisiones en vivo.

Esto fue solo una introducción y una configuración básica de GraphQL; esperamos que ahora comprenda algunos conceptos básicos de GraphQL y pueda evaluar si debe o no adoptar algo similar dentro de su propio entorno.

Publicar un comentario

0 Comentarios