Xbase++ Requires Chilkat v11.5.0+
Xbase++
curl with Variable Substitution in a GraphQL Request Body
See more CURL Examples
This example shows how to use variables inside agraphql request body using the {{variable_name}} syntax. When the HTTP request’s Content-Type indicates graphql, Chilkat automatically applies proper escaping to each substituted value, ensuring the resulting graphql remains valid.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oSbCurl
LOCAL oCurl
LOCAL oSbRawRequest
nSuccess := 0
nSuccess := 0
// Variable names are enclosed between {{ and }}
// Important: Variables should be placed inside the quotes.
// curl -X POST https://api.example.com/graphql \
// -H "Content-Type: application/graphql; charset=utf-8" \
// -H "Accept: application/json" \
// --data-binary "mutation {
// createUser(
// input: {
// name: \"{{name}}\"
// city: \"{{city}}\"
// note: \"{{note}}\"
// bio: \"{{bio}}\"
// }
// ) {
// id
// name
// }
// }"
// Build the above curl command.
oSbCurl := CreateObject("Chilkat.StringBuilder")
oSbCurl:AppendLn("curl -X POST https://api.example.com/graphql \")
oSbCurl:AppendLn(' -H "Content-Type: application/graphql; charset=utf-8" \')
oSbCurl:AppendLn(' -H "Accept: application/json" \')
oSbCurl:AppendLn(' -d "mutation {')
oSbCurl:AppendLn(" createUser(")
oSbCurl:AppendLn(" input: {")
oSbCurl:AppendLn(' name: \"{{name}}\"')
oSbCurl:AppendLn(' city: \"{{city}}\"')
oSbCurl:AppendLn(' note: \"{{note}}\"')
oSbCurl:AppendLn(' bio: \"{{bio}}\"')
oSbCurl:AppendLn(" }")
oSbCurl:AppendLn(" ) {")
oSbCurl:AppendLn(" id")
oSbCurl:AppendLn(" name")
oSbCurl:AppendLn(" }")
oSbCurl:AppendLn('}"')
oCurl := CreateObject("Chilkat.HttpCurl")
// Provide values for variables
oCurl:SetVar("name", "José O'Connor")
oCurl:SetVar("city", "München")
oCurl:SetVar("note", 'He said "Hello, world!" — and left…')
oCurl:SetVar("bio", "Loves sushi, café visits, and π ≈ 3.14159")
// To demonstrate how the variables are replaced, this example does not execute the curl command.
// Instead, it generates the raw HTTP request that would be sent if the curl command were run.
oSbRawRequest := CreateObject("Chilkat.StringBuilder")
nSuccess := oCurl:ToRawRequest(oSbCurl:GetAsString(), oSbRawRequest)
IF (nSuccess == 0)
? oCurl:LastErrorText
oSbCurl:destroy()
oCurl:destroy()
oSbRawRequest:destroy()
RETURN
ENDIF
? oSbRawRequest:GetAsString()
// The output is shown below.
// Notice the quote chars around "Hello, world!" are properly escaped.
// POST /graphql HTTP/1.1
// Accept: application/json
// Host: api.example.com
// Content-Type: application/graphql; charset=utf-8
// Content-Length: 250
//
// mutation {
// createUser(
// input: {
// name: "José O'Connor"
// city: "München"
// note: "He said \"Hello, world!\" — and left…"
// bio: "Loves sushi, café visits, and π ≈ 3.14159"
// }
// ) {
// id
// name
// }
// }
oSbCurl:destroy()
oCurl:destroy()
oSbRawRequest:destroy()