@amaster.ai/http-client
v1.1.25
Published
Base HTTP client with error handling and response unwrapping
Downloads
5,778
Readme
@amaster.ai/http-client
Base HTTP client for Amaster SDK packages.
createHttpClient
import { createHttpClient } from "@amaster.ai/http-client";
const http = createHttpClient({
baseURL: "https://api.example.com",
headers: {
Authorization: "Bearer token",
},
});Native fetch adapter with hooks
For runtimes that want to keep using native fetch but still reuse http-client's
URL resolution, default headers, response unwrap, error handling, and datetime processing,
use adapter: "fetch" with fetchAdapter hooks:
import { createHttpClient } from "@amaster.ai/http-client";
const http = createHttpClient({
adapter: "fetch",
baseURL: "http://runtime:3000",
headers: {
Authorization: "Bearer token",
"X-Tenant-ID": "app1",
"X-Env": "dev",
},
fetchAdapter: {
onRequest({ init }) {
const headers = new Headers(init.headers);
if (init.body instanceof FormData) {
headers.delete("Content-Type");
}
return {
init: {
...init,
headers,
},
};
},
async parseResponseBody({ response, config }) {
if (config.responseType === "blob") {
return await response.blob();
}
return await response.json();
},
},
});Request hook
If you only need to normalize the final request config before it reaches the adapter,
use beforeRequest:
import { createHttpClient } from "@amaster.ai/http-client";
const http = createHttpClient({
beforeRequest(config) {
return {
...config,
headers: {
...config.headers,
"X-Trace-Id": "trace-123",
},
};
},
});