Skip to content

Client

The Client is the primary interface for executing HTTP requests in @t-req/core.

Creates a new client instance.

import { createClient } from '@t-req/core';
import { createNodeIO } from '@t-req/core/runtime';
const client = createClient({
io: createNodeIO(),
variables: { baseUrl: 'https://api.example.com' },
});
OptionTypeDescription
ioIOFilesystem adapter for file operations. Required in Node.js for run().
transportTransportHTTP transport adapter. Defaults to fetch-based transport.
variablesRecord<string, unknown>Initial variables available to all requests.
resolversRecord<string, Resolver>Custom resolver functions for dynamic values.
cookieJarCookieJarCookie jar for automatic cookie management.
timeoutnumberDefault timeout in milliseconds for all requests.
defaultsRequestDefaultsDefault headers and request settings.
interface RequestDefaults {
headers?: Record<string, string>;
followRedirects?: boolean;
validateSSL?: boolean;
}

Execute a request from a .http file.

const response = await client.run('./api/users.http');
// With options
const response = await client.run('./api/user.http', {
variables: { userId: '123' },
timeout: 5000,
signal: controller.signal,
});
ParameterTypeDescription
pathstringPath to the .http file
optionsRunOptionsOptional request configuration
interface RunOptions {
variables?: Record<string, unknown>;
timeout?: number;
signal?: AbortSignal;
}

Promise<Response> - Standard Fetch API Response object.

Execute a request from in-memory .http content.

const response = await client.runString(`
GET https://api.example.com/users/{{userId}}
Authorization: Bearer {{token}}
`, {
variables: { userId: '123', token: 'abc' },
});
ParameterTypeDescription
contentstringThe .http file content
optionsRunOptionsOptional request configuration

Promise<Response> - Standard Fetch API Response object.

Set a single variable.

client.setVariable('token', 'new-jwt-token');
client.setVariable('userId', 123);

Set multiple variables at once.

client.setVariables({
token: 'new-token',
userId: 123,
env: 'production',
});

Get all current variables.

const vars = client.getVariables();
console.log(vars);
// { baseUrl: 'https://...', token: '...', userId: 123 }
import { createClient } from '@t-req/core';
import { createNodeIO } from '@t-req/core/runtime';
import { createCookieJar } from '@t-req/core/cookies';
const client = createClient({
io: createNodeIO(),
variables: {
baseUrl: 'https://api.example.com',
},
resolvers: {
$env: (key) => process.env[key] || '',
$timestamp: () => String(Date.now()),
$uuid: () => crypto.randomUUID(),
},
cookieJar: createCookieJar(),
timeout: 30000,
defaults: {
headers: {
'User-Agent': 'my-app/1.0',
'Accept': 'application/json',
},
followRedirects: true,
validateSSL: true,
},
});
// Login
const loginResponse = await client.run('./auth/login.http');
const { token } = await loginResponse.json();
client.setVariable('token', token);
// Use authenticated API
const usersResponse = await client.run('./api/users.http');
const users = await usersResponse.json();
import type { Client, ClientConfig, RunOptions } from '@t-req/core';