HTTP step
This topic describes the settings for the HTTP step.
You can use the HTTP step to run HTTP methods containing URLs, methods, headers, assertions, and variables.
Basic settings in the HTTP step
The following list covers the step settings.
- Name: The name of the step. You'll use this name when you reference the step settings. For example, if the step name is HTTP and you want to reference the URL entered in its URL setting, use:
<+pipeline.stages.tooltips.spec.execution.steps.HTTP.spec.url>
. - Timeout: The timeout for the step. Timeouts can be set at the pipeline level also.
- URL: The URL for the HTTP call.
- Method: The HTTP method to use in the step.
- Request body: The message body of the HTTP message.
Assertions in the HTTP step
Assertion is used to validate the incoming response. For example, if you wanted to check the health of an HTTP connection, use the assertion <+httpResponseCode>==200
.
The expression <+httpResponseCode>==200
will evaluate to true if the HTTP call returns a 200 code. You can also use the reverse expression 200==<+httpResponseCode>
.
Expressions can use the following aliases to refer to the HTTP responses, URL, and method.
<+httpResponseCode>
<+httpUrl>
<+httpMethod>
<+httpResponseBody>
String assertions in the HTTP step
To assert using strings in expressions, use double quotes. Without double quotes, JEXL mistakes the assertions as an expression.
Here are some examples:
- Correct:
"<+pipeline.variables.var1>"=="http"
. - Incorrect:
<+pipeline.variables.var1>==http
.
Integer assertions in the HTTP step
Assertions using integers should be done without any quotes because both sides of the JEXL assertion should use a number format.
Here are some examples:
- Correct:
<+pipeline.variables.EXPECTED_RESPONSE>==<+httpResponseCode>
. - Incorrect:
<+pipeline.variables.EXPECTED_RESPONSE>"=="<+httpResponseCode>
.
Assertion failures and failure strategies
Step failures are grouped into several categories, such as Authentication Errors, Timeout Errors, etc. When you set up a stage or step failure strategy, you can select which error category initiates the strategy.
For HTTP assertions, the Unknown Errors category initiates the strategy.
If you want a failure strategy to run when the HTTP step assertion fails, in the HTTP step Advanced Settings, Failure Strategy, in On failure of type, select Unknown Errors and then define your strategy.
When an assertion fails
Headers in the HTTP step
Enter the media type for the message. For example, if you are using the GET method, the headers are used to specify the GET response body message type.
- In Key, enter
Token
- In Value, enter
<+secrets.getValue("aws-playground_AWS_secret_key")>
Another method:
- Key:
variable:
- Value:
var1,var2:var3
You can copy the key and paste it in the HTTP step Header setting. For more information, go to Manage API keys.
Input variables in the HTTP step
Create input variables that can be used by other fields within the step. The Value setting can contain fixed values, expressions, or runtime inputs.
These variables can be used by other fields like URLs by using the following expressions:
<+spec.inputVariables.variable_name>
or <+step.spec.inputVariables.variable_name>
Output variables in the HTTP step
Create output variables to be used by other steps in the stage. The Value setting can contain any HTTP step input, output, or response information.
You can also use JSON and XML functors in the values for the output variable. For example, <+json.select("data.attributes.version_pins.mvn-service://new-construction-api", httpResponseBody)>
.
You can use pipeline variables along with httpResponseBody
and httpResponseCode
.
Here are some examples:
<+json.object(httpResponseBody).title>
<+json.select(<+pipeline.variables.title>, httpResponseBody)>
To concatenate strings within the JSON functor:
<+json.select(<+ <+pipeline.variables.user> + <+pipeline.variables.id>>,httpResponseBody)>
or <+json.select("user".concat(<+pipeline.variables.id>),httpResponseBody)>
For more information, go to JSON and XML functors.
Output variables also support JEXL expressions.
Advanced step settings
In Advanced, you can use the following options:
Step execution inputs and outputs
Once you execute your pipeline, the step displays its inputs and outputs and their values.
You can reference these anywhere in your pipeline.
Inputs
In the following examples, the Id of the HTTP step is HTTP
.
Input Name | Input Reference Example | Input Value Example |
---|---|---|
identifier | <+pipeline.stages.HTTP.spec.execution.steps.check_response.identifier> | check\_response |
name | <+pipeline.stages.HTTP.spec.execution.steps.check_response.name> | check response |
timeout | <+pipeline.stages.HTTP.spec.execution.steps.check_response.timeout> | 10s |
type | <+pipeline.stages.HTTP.spec.execution.steps.check_response.type> | Http |
url | <+pipeline.stages.HTTP.spec.execution.steps.check_response.spec.url> | https://www.google.com/search?q= |
method | <+pipeline.stages.HTTP.spec.execution.steps.check_response.spec.method> | GET |
requestBody | <+pipeline.stages.HTTP.spec.execution.steps.check_response.spec.requestBody> | current+date |
assertion | <+pipeline.stages.HTTP.spec.execution.steps.check_response.spec.assertion> | <+httpResponseCode> == 200 |
Outputs
In the following examples, the Id of the HTTP step is HTTP
.
Output | Output Reference Example | Output Value Example |
---|---|---|
httpUrl | <+pipeline.stages.HTTP.spec.execution.steps.HTTP.output.httpUrl> | https://www.google.com/search?q= |
httpMethod | <+pipeline.stages.HTTP.spec.execution.steps.HTTP.output.httpMethod> | GET |
httpResponseCode | <+pipeline.stages.HTTP.spec.execution.steps.HTTP.output.httpResponseCode> | 200 |
httpResponseBody | <+pipeline.stages.HTTP.spec.execution.steps.HTTP.output.httpResponseBody> | Hello |
status | <+pipeline.stages.HTTP.spec.execution.steps.HTTP.output.status> | SUCCESS |
Use a certificate and key
This feature is behind the feature flag CDS_HTTP_STEP_NG_CERTIFICATE
. Contact Harness Support to enable the feature.
You can specify a TSL certificate and key for the HTTP step. This enables TLS encryption for your HTTP services.
- In Optional Configuration, in Certificate, select the secret for the certificate, including the
-----BEGIN CERTIFICATE-----
and-----END CERTIFICATE-----
. - In Certificate Key, select the secret for the public key.
You can use fixed values, expressions, or runtime inputs for these settings. For more information, go to Harness file secrets and text secrets.
Delegate proxy
HTTP step supports delegate proxy settings by default. For more information, go to delegate proxy settings.
Header capability check
When Harness runs an HTTP step and connects to a service, it checks to make sure that an HTTP connection can be established.
Some services require HTTP headers to be included in connections. Without the headers, the HTTP connections fail and simple HTTP verification cannot be performed.
Harness performs an HTTP capability check with the headers included on the target service.
If the target host server require headers and you do not include headers in the Headers