Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best way to construct a GraphQL query string in Python

I'm trying to do this (see title), but it's a bit complicated since the string I'm trying to build has to have the following properties:

  • mulitiline
  • contains curly braces
  • I want to inject variables into it

Using a normal '''''' multiline string makes injecting variables difficult. Using multiple f-strings makes injecting variables easy, but every curly brace, of which there are a lot, has to be doubled. And an f has to be prepended to each line. On the other hand, if I try using format, it also gets confused by all the curly braces.

Is there a better way that I haven't considered yet?

like image 634
Tobias Feil Avatar asked Jun 15 '20 08:06

Tobias Feil


1 Answers

You can use the """ multiline string method. For injecting variables, make sure to use the $ sign while defining the string and use the variables object in the JSON parameter of the requests.post method.

Here is an example. ContactInput is one of the types I defined in my GraphQL schema.

query = """
  mutation ($input:[ContactInput!]!) {
    AddContacts(contacts: $input) {
      user_id
    }
  }
"""
variables = {'input': my_arrofcontacts}
r = requests.post(url, json={'query': query , 'variables': variables})
like image 87
Ayush Garg Avatar answered Nov 12 '22 12:11

Ayush Garg