Skip to main content

postAsync

The postAsync method sends an HTTP POST request with a JSON body to the specified endpoint. It supports optional route parameters, custom headers, and request cancellation via an AbortController.


Method Signature

public async postAsync(
routeParam: string | null = null,
data: any,
headers: Headers = {},
controller: AbortController | null = null
): Promise<any>

Parameters

NameTypeDescriptionOptionalDefault Value
routeParamstring | nullOptional route segment to append to the base URLYesnull
dataanyJSON data to send in the request bodyNoN/A
headersHeadersOptional HTTP headers to include in the requestYes{}
controllerAbortController | nullOptional controller to allow request cancellationYesnull

Returns

The postAsync method returns a Promise that resolves to one of the following, depending on the server response:

  • Parsed JSON object if the response has a Content-Type of application/json
  • Plain text string if the response is text-based
  • null if the server responds with HTTP status 204 No Content

Error Handling

If the request fails, the returned Promise rejects with an error object containing:

  • message: A descriptive error message
  • status: HTTP status code (if available)
  • statusText: HTTP status text (if available)
  • responseBody: Parsed response body or raw text for further inspection

Errors can occur due to network failures, request timeouts, server errors, or manual request cancellation (via AbortController).

Example

import LunexClient from 'lunex-http';

const client = new LunexClient('https://api.example.com', {
Authorization: 'Bearer YOUR_TOKEN',
});

async function run(): Promise<void> {
try {
const newUser = {
name: 'John Doe',
email: 'john.doe@example.com',
};

const response: any = await client.postAsync('users', newUser);
console.log('User created:', response);
} catch (error: unknown) {
console.error('POST request failed:', error);
}
}

run();