Как использовать запрос python для загрузки файла с помощью graphql?

#python #graphql

Вопрос:

У меня есть код завитка, сгенерированный из-за бессонницы, который отлично работает. Я просто не могу понять, как воспроизвести его с помощью запроса python.

 curl --request POST 
  --url MY_SERVER_URL 
  --header 'Accept: application/json' 
  --header 'Content-type: multipart/form-data; boundary=---011000010111000001101001' 
  --header 'Authorization:  AUTH_TOKEN' 
  --form 'operations={
  "query": "mutation($file: Upload!, $path: String!, $private: Boolean) { uploadFile(file: $file, path: $path, private: $private) }",
  "variables": {
    "file": null,
    "path": "test",
    "private": false
  }
}' 
  --form 'map={ "0": ["variables.file"] }' 
  --form '0=@E:DevelopmentTechnologyPythonsmall_utilitiesbarwisrandom-filesfilescsvsabove serious.csv'
 

Спасибо

Ответ №1:

Я нашел решение. Если у кого-то есть такая же проблема, вот справочный код.

 file = open('FILE_PATH', 'rb')
auth_headers = {
  "Authorization": f"Bearer {token}"
}

query = """
  mutation($file: Upload!, $path: String!, $private: Boolean) { 
      uploadFile(file: $file, path: $path, private: $private) 
  }
  """
  
variables = { 
    "file": None,
    "path": 'test',
    "private": True
}  

operations = json.dumps({
  "query": query,
  "variables": variables
})

map = json.dumps({ "0": ["variables.file"] })
  
response = requests.post(graphql_url, data = {
    "operations": operations,
    "map": map
  },
  files = {
    "0" : file
  },
  headers = auth_headers
)