AnWeber / vscode-httpyac

Quickly and easily send REST, Soap, GraphQL, GRPC, MQTT and WebSocket requests directly within Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=anweber.vscode-httpyac
MIT License
222 stars 20 forks source link

variables are not working in a graphQL body #303

Closed MyOrk64 closed 2 weeks ago

MyOrk64 commented 2 weeks ago

Hi, i am testing the shopify graphQL-API. I can use variables in header, request, but not in everywhere in the body. A simple query is runnung into errors because {{sku}} is not replaced its value. Error message from Shopify: "Invalid global id 'gid://shopify/Product/{{sku}}'". Suprisingliy it is, when i use it in the graphQL variable definition area. I've tried "{{sku}}", \{\{sku\}\}, `$(sku))` , `"$(sku))"` ... and so on,

Why is it not working in the query definition, but working with variable definitions message part of the body?

@sku=123456789
###
# @title ERROR with httpyac variable
POST https://{{storename}}.myshopify.com/admin/api/2024-04/graphql.json
...defaultHeaders

query getit {
  product( id: "gid://shopify/Product/{{sku}}" ) {
    id
    status
  }
}

###
# @titel replacement with graphQL variable is working
POST https://{{storename}}.myshopify.com/admin/api/2024-04/graphql.json
...defaultHeaders

query getit($sku: ID!) {
  product( id: $sku ) {
    id
    status
 }
}

{
"sku": "gid://shopify/Product/{{sku}}"
}
AnWeber commented 2 weeks ago

@MyOrk64 Variables in variable definition part are rreplaced by requestVariableReplacer. Unfortunatly the gql query body is only added to the body after this replaced and this does prevent variable replacement. I added explicit replacing of variables for gql query body. Fixed with next release