带有 JSon 的 GraphQL 和 Python - 未转义字符的语法错误

Posted

技术标签:

【中文标题】带有 JSon 的 GraphQL 和 Python - 未转义字符的语法错误【英文标题】:GraphQL and Python with JSon - Syntax Error with Unescaped characters 【发布时间】:2019-02-25 06:13:27 【问题描述】:

我正在尝试发布 GraphQL Mutation,但遇到了我无法弄清楚的语法错误。我看到有一个关于转义/未转义字符的错误。我试过转义,双引号,单引号,不加引号。我似乎无法解决这个问题。 Traceback 下的代码。

# http headers for api call
headers = 
    'accept': "application/json",
    'content-type':"application/json",
    'authorization': "bearer " + token,


# create inventory variable for mutation 
# will convert the csv to the json input in production
inventory:["supplier_id":24522,"supplier_part_number":"1-1002-9-SN","quantity_on_hand":5,"item_next_availability_date":"05-01-2018T00:00:00", "discontinued":true]


# payload of the json query to pass to the API
#GraphQL Query to pull in Purchase Order Data 
payload = '''
"query":"mutation save_inventory($inventory: [inventoryInput]!) 
  inventory 
    save(inventory: $inventory, dry_run: true) 
      handle
    
  
"
'''

# send API call and assign response to variable
response = requests.post(api_url, data=payload, headers=headers)

错误我无法在下面弄清楚。

  "errors":["message":"Syntax Error GraphQL (1:1) Unexpected <EOF>\n\n1: \n   ^\n","category":"graphql","locations":["l
    ine":1,"column":1]]

【问题讨论】:

会不会是payload = '''后面的换行符?如果将其更改为 payload = '''"query":"mutat... 会发生什么? 这让我克服了那个错误并进入下一个错误,谢谢! @jDo 【参考方案1】:

我的 Python 生锈了,但我相信你想使用 json 而不是 data。您也没有传入您定义的 inventory 变量。尝试类似:

json = 
  "query": '''   
    mutation save_inventory($inventory: [inventoryInput]!) 
      inventory 
        save(inventory: $inventory, dry_run: true) 
        handle
      
    
  
  ''',
  "variables": 
    "inventory": inventory
  


response = requests.post(api_url, json=json, headers=headers)

【讨论】:

以上是关于带有 JSon 的 GraphQL 和 Python - 未转义字符的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 GraphQL 解析错误的 Google Apps 脚本 API 请求

如何使用 Python(带有 websockets 的服务器)和 JavaScript(客户端)接收 JSON 数据

Laravel 中的 Graphql 查询对象

嵌套对象的模式/解析 graphql/mongoose

带有 Spring Boot 和事务边界的 graphql-spqr

返回带有节点和graphql的字符串数组