Sample code for 30+ languages & platforms
Java Requires Chilkat v11.5.0+

curl with Variable Substitution in a GraphQL Request Body

See more CURL Examples

This example shows how to use variables inside a graphql 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 Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.HttpCurl;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        boolean success = false;

        success = false;

        // 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.
        StringBuilder sbCurl = new StringBuilder();
        sbCurl.appendLn("curl -X POST https://api.example.com/graphql \\");
        sbCurl.appendLn("  -H \"Content-Type: application/graphql; charset=utf-8\" \\");
        sbCurl.appendLn("  -H \"Accept: application/json\" \\");
        sbCurl.appendLn("  -d \"mutation {");
        sbCurl.appendLn("  createUser(");
        sbCurl.appendLn("    input: {");
        sbCurl.appendLn("      name: \\\"{{name}}\\\"");
        sbCurl.appendLn("      city: \\\"{{city}}\\\"");
        sbCurl.appendLn("      note: \\\"{{note}}\\\"");
        sbCurl.appendLn("      bio: \\\"{{bio}}\\\"");
        sbCurl.appendLn("    }");
        sbCurl.appendLn("  ) {");
        sbCurl.appendLn("    id");
        sbCurl.appendLn("    name");
        sbCurl.appendLn("  }");
        sbCurl.appendLn("}\"");

        HttpCurl curl = new HttpCurl();

        // Provide values for variables
        curl.setVar("name", "José O'Connor");
        curl.setVar("city", "München");
        curl.setVar("note", "He said \"Hello, world!\" — and left…");
        curl.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.
        StringBuilder sbRawRequest = new StringBuilder();
        try {
            curl.toRawRequest(sbCurl.getAsString(), sbRawRequest);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println(sbRawRequest.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
        //   }
        // }
    }
}