HTTP DSL syntax
httpx supports JetBrains HTTP request syntax and VS Code REST Client both.
Environment variables
All environment variables are defined in json files:
- http-client.env.json - regular variables
- http-client.private.env.json - private variables, such as passwords, tokens, certificates, and other sensitive information
- .vscode/settings.json
{
"rest-client.environmentVariables": {
"$shared": {
"username": "admin",
"password": "123456"
},
"development": {
"hostname": "localhost:8080"
},
"production": {
"hostname": "localhost:8081"
}
}
}
Attention: httpx doesn't support File/Request Variables in VS Code REST Client.
Global variables
You can access global variables by response handler script, example as following:
GET https://httpbin.org/ip
> {%
client.global.set("myip", response.body['origin']);
%}
Then you can use global variables just like normal environment variables:
### post test
POST https://httpbin.org/post
Content-Type: application/json
{
"ip": "{{myip}}"
}
For more about global
API, please visit https://www.jetbrains.com/help/idea/http-client-reference.html#global-variables-storage-reference
Attention:
- JetBrains HTTP Client plugin persists global variables in memory, and they will be gone after IDE/project closed.
- httpx CLI persists global variables in
$HOME/.servicex/global_variables.json
because command line is short-live - Global variables reuse in httpx: if request
a
wants to use global variables generated by requestb
, and you should executehttpx b
to persist variables then executehttpx a
Extension
Some functions are not compatible with JetBrains HTTP Client and VS Code REST Client!!!
Functions
Function call styles:
- function without params:
{{$uuid}}
,{{$guid}}
,{{$timestamp}}
,{{$randomInt}}
- function with params:
{{$base64 abc123}}
,{{$base64 %name}}
,{{$escapeXml <user></user>}}
- function with template params:
{{$base64 `%{name}:%{password}`}}
If you want to refer env variables, please use %name
as param or %{name}
in template literal.
Function list:
- data: uuid, guid, randomInt, timestamp, datetime, localDatetime, projectRoot, historyFolder
- encode: base64, urlEncode
- escape: escapeHtml, escapeXml, escapeJson, escapeJavaScript
- hmac: hmacMD5, hmacSHA1 hmacSHA256 hmacSHA512 - hex encoded:
{{$hmacSHA1 key1 text}}
, base64 encode:{{$hmacSHA1 key1 text base64}}
- digest: md5 sha1 sha256 sha512 - hex encoded:
{{$sha256 text}}
, base64 encoded:{{$sha256 text base64}}
- misc: processEnv, dotenv