Skip to main content

A python library to call GraphQL APIs without using hardcoded strings

Project description

Python package Codacy Badge

py-graphql-mapper

Code Generation Test Pyhon-GraphQL Mapping Test

A python library to interact with GraphQL APIs with no need of hardcoded strings.

Introduction

This library acts as a mapper between python and GraphQL languages for GraphQL clients, allowing a code-first approach when calling a GraphQL API server. It translates GraphQL entities into python objects and viceversa in order to avoid working with massive "copy&paste"s.

The package does not use any third-party libraries, it relies only on python 3 (3.10+) standard libraries.

Usage in a nutshell

Installation

The following command will install the library:

python setup.py install

Generate python code from schema

To generate the code execute the following command:

pygqlcodegen generate ./pathToOutputFolder -apiArgs ./pathToArgsFile/generatorArgs.json

This command requires a json file containing the parameters needed to get the GraphQL schema

image

In the output folder there will be the following python files:

  • enums.py
  • scalars.py
  • gqlSimpleTypes.py
  • gqlTypes.py
  • circularRefs.py
  • queries.py
  • mutations.py

The following links show code generated using the library Github GraphQL API, Rapid GraphQL API and GeoDBCities API

More command options available here

Execution of a query

Choose the query class you want to use from the generated file queries.py (or a mutation from mutations.py):

from .output.GeoDBCities.queries import currencies

myCurrenciesQuery = currencies()

populate the necessary information to execute the query:

myCurrenciesQuery._args.last = 7
myCurrenciesQuery._args.before = 'MTE='

Call exportGqlSource property to pass the payload to the HTTP request:

(example using requests library)

import requests

response = requests.request('POST', url='https://geodb-cities-graphql.p.rapidapi.com/',
                            json= { "query": myCurrenciesQuery.exportGqlSource },
                            headers={
                                    "content-type": "application/json",
                                        "X-RapidAPI-Key": '123402mmri02fni230iif32jr420',
                                        "X-RapidAPI-Host": "geodb-cities-graphql.p.rapidapi.com"
                                    }
                            )

More details here

Retrieval of a response

Obtained the response from the GraphQL API the following code will map the received json payload into the python object

from pgqlmCore.network import GQLResponse

gqlResponse = GQLResponse(response)

gqlResponse.mapGQLDataToObj(myCurrenciesQuery.type)

print('resultObject: ' + str(gqlResponse.resultObject))

The mapped response from the GraphQL server will be available within gqlResponse object: gqlResponse.resultObject

More details here

A suite of use cases here

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-graphql-mapper-1.0.0.tar.gz (31.4 kB view hashes)

Uploaded Source

Built Distribution

py_graphql_mapper-1.0.0-py3-none-any.whl (39.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page