py-graphql-mapper
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.
This document contains a quick overview of the functionalities, for more details and options you can read here:
The package does not use any third-party libraries, it relies only on python 3 (3.10+) standard libraries.
Usage in a nutshell
Installation
Available in PyPI, the following command will install the library:
pip install py-graphql-mapper
Generate python code from schema
To generate the code execute the following command:
pgmcodegen generate ./pathToOutputFolder -apiArgs ./<pathToArgsFile>/generatorArgs.json
This command requires a json file containing the parameters needed to get the GraphQL schema
A sample is available in the main folder 'cli_args.json'.
The following python files will be generated:
- enums.py
- scalars.py
- gql_simple_types.py
- gql_types.py
- type_refs.py
- queries.py
- mutations.py
These links show code generated using the library Github GraphQL API, Rapid GraphQL API and GeoDBCities API
More command options are 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):
Instantiate it adding GraphQL arguments if needed:
from .output.gdbc.queries import currencies
my_currencies = currencies(last=7, before='MTE=')
or add them using the field args
my_currencies._args.last = 7
my_currencies._args.before = 'MTE='
Then call export_gql_source 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": my_currencies.export_gql_source },
headers={
"content-type": "application/json",
"X-RapidAPI-Key": '123402mmri02fni230iif32jr420',
"X-RapidAPI-Host": "geodb-cities-graphql.p.rapidapi.com"
}
)
More details on how to set a query 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 pygqlmap.network import GQLResponse
gqlResponse = GQLResponse(response)
gqlResponse.map_gqldata_to_obj(myCurrenciesQuery.type)
print('Result object: ' + str(gqlResponse.result_obj))
The mapped response from the GraphQL server will be available within gqlResponse object: _gqlResponse.result_obj_
More details here
A suite of use cases here
Release files for py-graphql-mapper 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py-graphql-mapper-1.1.2.tar.gz | 37.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py_graphql_mapper-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 81.2 kB
Release files / py-graphql-mapper-1.1.2.tar.gz
| Download URL | py-graphql-mapper-1.1.2.tar.gz |
|---|---|
| Size | 37.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
808741870d6443db83ae6cdea94d196531286b029eb806abb434dbdabebd06a6
|
|
BLAKE2b-256 checksum How to use checksums |
d02a3f13fd714a55e22a950deb07b67204a54877480a78e689ebc77cd09989e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / py_graphql_mapper-1.1.2-py3-none-any.whl
| Download URL | py_graphql_mapper-1.1.2-py3-none-any.whl |
|---|---|
| Size | 43.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3e83ce5935a54304408b73a8cfd5ef0ee6b288b0982f06fa6c20d02585a52114
|
|
BLAKE2b-256 checksum How to use checksums |
02b8ed4d294131376f256c6670da3fe7cb12c1a0e47d6687ecfd5c6375d55b37
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|