使用 Python 请求处理 Graphql 突变

Posted

技术标签:

【中文标题】使用 Python 请求处理 Graphql 突变【英文标题】:Handling Graphql Mutation With Python Requests 【发布时间】:2020-09-02 00:32:46 【问题描述】:

我正在尝试使用 waveapps API。看来我没有正确地进行变异操作。

我想创建一个Transaction via WaveApps API。以下是我的代码:

query = """ mutation ($input: MoneyTransactionCreateInput!) moneyTransactionCreate(input: $input) moneyTransaction id externalId date description anchoraccountId amount direction lineItems[accountId amount balance]"""

moneyTransaction = 'businessId':'5ODAtNzQ3OS00ZGQ4LTg5NWYtMzU4ZWNiNDNmMTI2', 
'externalId':'21', 'date':'2020-05-16', 'description':'my money', 'anchor':'accountId':'1', 
'amount':'15.00', 'direction':'DEPOSIT',
'lineItems':['accountId':'1', 'amount':'15.00', 'balance':'CREDIT']

variables = 'input': moneyTransaction

rex = requests.post(wave_url, json='query':query, 'variables':variables, headers=after_headers)

我收到了这个错误:

'"errors":["extensions":"id":"e6b88a8d-a5f8-4331-80db-191dbb319690","code":"GRAPHQL_PARSE_FAILED","message":"Syntax Error: Expected Name, found [","locations":["line":1,"column":183]]\n'

我遗漏了一些东西,但无法弄清楚问题所在。我是 Graphql 的新手。

【问题讨论】:

【参考方案1】:

您的查询中有多余的方括号。方括号仅在指定 List 类型时使用——从不需要在选择集中使用它们。

mutation ($input: MoneyTransactionCreateInput!) 
  moneyTransactionCreate(input: $input) 
    moneyTransaction 
      id
      externalId
      date
      description
      anchor 
        accountId
        amount
        direction
      
      lineItems 
        accountId
        amount
        balance
      
    
  

【讨论】:

【参考方案2】:

这也有效。

mutation ($inputMoneyTransactionCreate: MoneyTransactionCreateInput!) 
  moneyTransactionCreate(input: $inputMoneyTransactionCreate) 
    didSucceed
    inputErrors 
      code
      message
      path
    
  

变量改为:

variables = 'inputMoneyTransactionCreate': moneyTransaction

【讨论】:

以上是关于使用 Python 请求处理 Graphql 突变的主要内容,如果未能解决你的问题,请参考以下文章

如何使用动态别名在单个请求中多次调用 GraphQL 突变

如何使用 Rails 和 GraphQL 处理复杂的突变

如何在 GraphQL 中包含突变请求元数据?

GraphQL CodeGen - 使用单个请求执行任意次数的相同突变

使用 Apollo 客户端时未将 GraphQL 突变发送到请求?

如何在 python 函数中编写 graphQL 突变?