![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) curl with Variable Substitution in a GraphQL Request BodySee more CURL ExamplesThis 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.Note: This example requires Chilkat v11.5.0 or greater.
IncludeFile "CkStringBuilder.pb" IncludeFile "CkHttpCurl.pb" Procedure ChilkatExample() success.i = 0 success = 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. sbCurl.i = CkStringBuilder::ckCreate() If sbCurl.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppendLn(sbCurl,"curl -X POST https://api.example.com/graphql \") CkStringBuilder::ckAppendLn(sbCurl," -H " + Chr(34) + "Content-Type: application/graphql; charset=utf-8" + Chr(34) + " \") CkStringBuilder::ckAppendLn(sbCurl," -H " + Chr(34) + "Accept: application/json" + Chr(34) + " \") CkStringBuilder::ckAppendLn(sbCurl," -d " + Chr(34) + "mutation {") CkStringBuilder::ckAppendLn(sbCurl," createUser(") CkStringBuilder::ckAppendLn(sbCurl," input: {") CkStringBuilder::ckAppendLn(sbCurl," name: \" + Chr(34) + "{{name}}\" + Chr(34)) CkStringBuilder::ckAppendLn(sbCurl," city: \" + Chr(34) + "{{city}}\" + Chr(34)) CkStringBuilder::ckAppendLn(sbCurl," note: \" + Chr(34) + "{{note}}\" + Chr(34)) CkStringBuilder::ckAppendLn(sbCurl," bio: \" + Chr(34) + "{{bio}}\" + Chr(34)) CkStringBuilder::ckAppendLn(sbCurl," }") CkStringBuilder::ckAppendLn(sbCurl," ) {") CkStringBuilder::ckAppendLn(sbCurl," id") CkStringBuilder::ckAppendLn(sbCurl," name") CkStringBuilder::ckAppendLn(sbCurl," }") CkStringBuilder::ckAppendLn(sbCurl,"}" + Chr(34)) curl.i = CkHttpCurl::ckCreate() If curl.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Provide values for variables CkHttpCurl::ckSetVar(curl,"name","José O'Connor") CkHttpCurl::ckSetVar(curl,"city","München") CkHttpCurl::ckSetVar(curl,"note","He said " + Chr(34) + "Hello, world!" + Chr(34) + " — and left…") CkHttpCurl::ckSetVar(curl,"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. sbRawRequest.i = CkStringBuilder::ckCreate() If sbRawRequest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkHttpCurl::ckToRawRequest(curl,CkStringBuilder::ckGetAsString(sbCurl),sbRawRequest) If success = 0 Debug CkHttpCurl::ckLastErrorText(curl) CkStringBuilder::ckDispose(sbCurl) CkHttpCurl::ckDispose(curl) CkStringBuilder::ckDispose(sbRawRequest) ProcedureReturn EndIf Debug CkStringBuilder::ckGetAsString(sbRawRequest) ; 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 ; } ; } CkStringBuilder::ckDispose(sbCurl) CkHttpCurl::ckDispose(curl) CkStringBuilder::ckDispose(sbRawRequest) ProcedureReturn EndProcedure |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.