@edirect/request
v11.0.54
Published
HTTP request utility for eDirect applications. Provides a thin Axios wrapper (`sendRequest`) that automatically resolves service base URLs from the common `config` folder structure, propagates correlation headers (`SessionId`, `QuoteId`), and optionally h
Maintainers
Keywords
Readme
@edirect/request
HTTP request utility for eDirect applications. Provides a thin Axios wrapper (sendRequest) that automatically resolves service base URLs from the common config folder structure, propagates correlation headers (SessionId, QuoteId), and optionally handles auth service token injection.
Features
- Auto-resolves service base URL from
node-configservice configuration - Supports explicit
baseURLfor external services - Propagates
SessionIdandQuoteIdcorrelation headers automatically - Tokenized request variant for auto-authenticated calls (
sendTokenizedRequest) - Full Axios request config pass-through (headers, timeout, etc.)
- CommonJS and TypeScript exports
Installation
pnpm add @edirect/request
# or
npm install @edirect/requestUsage
Basic Usage — Named Service (uses config folder)
import { sendRequest } from '@edirect/request';
// Service URL is resolved from config/default.yaml under the service name
const response = await sendRequest('entity-service', {
headers: {
Authorization: `Bearer ${token}`,
},
}).request('GET', '/entities/123');The service name resolves to the base URL configured in your config/ folder (via node-config):
# config/default.yaml
entity-service:
url: https://entity-service.internal.example.comExplicit Base URL — External Services
When the service is not in the config, pass null as service name and set baseURL:
import { sendRequest } from '@edirect/request';
const response = await sendRequest(null, {
baseURL: 'https://auth.bolttechbroker.net',
headers: {
Authorization: `Bearer ${token}`,
},
}).request('POST', '/token', { grant_type: 'client_credentials' });CommonJS
const { sendRequest } = require('@edirect/request');
const response = await sendRequest('my-service', {
headers: { Authorization: `Basic ${token}` },
}).request('GET', '/health');Correlation Header Propagation
import { sendRequestInstance } from '@edirect/request';
// Set correlation IDs once — all subsequent requests will include them as headers
sendRequestInstance.setIdSendRequest('session-abc-123');
sendRequestInstance.setQuoteIdSendRequest('quote-xyz-456');
// These requests will automatically include SessionId and QuoteId headers
await sendRequestInstance
.sendRequest('policy-service')
.request('GET', '/policies');API
sendRequest(service?, options?)
| Parameter | Type | Description |
| --------- | -------------------- | ------------------------------------------------------------------------------- |
| service | string \| null | Service name to look up in config/ folder, or null to use options.baseURL |
| options | AxiosRequestConfig | Standard Axios request config (headers, timeout, params, etc.) |
Returns { request: Request } where request(method, uri, data?) executes the HTTP call.
Request method
request(method: string, uri: string, data?: unknown): Promise<AxiosResponse>SendRequest class
For more control, import the SendRequest class directly:
import { SendRequest } from '@edirect/request';
const client = new SendRequest();
client.setIdSendRequest('session-id');
client.setQuoteIdSendRequest('quote-id');
await client.sendRequest('my-service').request('GET', '/endpoint');