What happens on send#

Follow a request through its script, the variable pass, the send, and the reply.

Every HTTP request you send passes through the same fixed sequence. If you know the order, you can predict what a request looks like on the wire and find where one went wrong. This sequence covers HTTP. The other request types follow their own path.

What runs before the send#

The client checks the URL first. An empty URL stops the send and shows URL is required under the bar.

If the request has a pre-request script, it runs next. The script can change the method, URL, headers, or body, and set variables for later. A script error stops the send and shows the message on the Console tab.

The client then resolves your {{variables}} and any dynamic variables into concrete values, and assembles the wire request:

  • If the URL has no scheme, the client adds https:// at the front.
  • The client URL-encodes every ticked row in Params and appends it to the query string. It skips empty and unticked rows.
  • The client adds every ticked header. It skips empty and unticked headers.
  • For POST, PUT, and PATCH, the client builds the body from the active body type. It also sets the matching Content-Type for you.

The client resolves Authentication into the request last. It then sends the request with the timeout, redirect, and SSL options from the Settings tab. While the request is in flight, the response area shows Sending request....

After the response arrives#

When the response comes back, the client reads its status, headers, body, timing, and size. It shows them in the response panel. The colour of the status badge follows the status range: 2xx, 3xx, 4xx, or 5xx.

If the request has a test script, it runs against the response and fills the Test results tab. A failing assertion or a broken test script does not fail the request. It shows as a failed test, so you still see the response.

Finally, the client adds a copy of the request and response to the top of History. History keeps your original {{variable}} text, so a request you reopen from it stays editable.

What each send works out#

A new request tab takes its name from the host in the URL. After you save the request to a collection, the saved name stays put. The response panel always opens on the Body tab. The Preview tab is available only when the response is HTML. The Console tab is available only when a script logged something.

There is no caching or automatic retry. Each send is independent.