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

curl with Variable Substitution in the Request Body

See more CURL Examples

This example demonstrates using variables located in the request body with the {{variable_name}} syntax.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

-- Variables can also be used within the HTTP request body.
-- Variable names are enclosed between {{ and }}

-- Here is a curl command with two variables {{name}} and {{age}} located in the data.

-- curl -X POST https://api.example.com/data \
--   -H "Content-Type: application/json" \
--   -d '{"name":"{{name}}","age":{{age}}}'

local sbCurl = chilkat.StringBuilder.new()
sbCurl:append_ln("curl -X POST https://api.example.com/data \\")
sbCurl:append_ln("  -H \"Content-Type: application/json\" \\")
sbCurl:append_ln("  -d '{\"name\":\"{{name}}\",\"age\":{{age}}}'")

local curl = chilkat.HttpCurl.new()

-- Provide values for variables.
curl:set_var("name", "Alice")
curl:set_var("age", "30")

-- 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.
local sbRawRequest = chilkat.StringBuilder.new()
local success = curl:to_raw_request(sbCurl:get_as_string(), sbRawRequest)
if not success then
    print(curl.last_error_text)
    return
end

print(sbRawRequest:get_as_string())

-- Output:

-- POST /data HTTP/1.1
-- Host: api.example.com
-- Content-Type: application/json
-- Content-Length: 25
--
-- {"name":"Alice","age":30}

-- --------------------------------------------------------------------------------------------------
-- Note: Variable substitution in the request body can be turned off by
-- setting the EnableBodyVars property equal to false

curl.enable_body_vars = false

success = curl:to_raw_request(sbCurl:get_as_string(), sbRawRequest)
if not success then
    print(curl.last_error_text)
    return
end

print(sbRawRequest:get_as_string())

-- The raw request with body variable substitution disable:

-- Host: api.example.com
-- Content-Type: application/json
-- Content-Length: 33
--
-- {"name":"{{name}}","age":{{age}}}