使用Python请求发布GraphQL突变

时间:2018-11-03 12:49:45

标签: python python-requests graphql

我无法通过GraphQL和Python请求发布变异。

我的功能如下:

def create(request):
    access_token = 'REDACTED'
    headers = {
        "X-Shopify-Storefront-Access-Token": access_token
    }


    mutation = """
    {
      checkoutCreate(input: {
        lineItems: [{ variantId: "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0VmFyaWFudC80", quantity: 1 }]
      }) {
        checkout {
           id
           webUrl
           lineItems(first: 5) {
             edges {
               node {
                 title
                 quantity
               }
             }
           }
        }
      }
    }
    """

    data = (requests.post('https://catsinuniform.myshopify.com/api/graphql', json={'mutation': mutation}, headers=headers).json())


    print(data)
    return render(request, 'Stock/create.html', { 'create': data })

我收到错误消息,说我的json响应中有一个错误的请求“ bad_request-参数丢失或无效”。

1 个答案:

答案 0 :(得分:2)

即使您发送突变,您的请求主体仍应包含查询属性,其属性值应为代表您的操作的字符串。这有点令人困惑,但是非正式地,查询和变异都称为“查询”(您仍然以任何一种方式“查询”服务器)。将您的请求更改为:

requests.post('https://catsinuniform.myshopify.com/api/graphql', json={'query': mutation}, headers=headers)