@kontent-ai/core-sdk
Version:
Core package with shared / common functionality for Kontent.ai SDKs
61 lines (43 loc) • 3.13 kB
Markdown
[](https://www.npmjs.com/package/@kontent-ai/core-sdk)
[](https://github.com/kontent-ai/core-sdk-js/actions/workflows/build.yml)
[](https://github.com/kontent-ai/core-sdk-js/actions/workflows/unit-tests.yml)
[](https://github.com/kontent-ai/core-sdk-js/actions/workflows/integration-tests.yml)
[](https://www.npmjs.com/package/@kontent-ai/core-sdk)
[](https://snyk.io/test/github/kontent-ai/core-sdk-js)
[](https://github.com/kontent-ai/core-sdk-js)
# Core SDK Overview
The **Core SDK** provides foundational functionality leveraged by dependent Kontent.ai SDKs, such as [`@kontent-ai/delivery-sdk`](https://www.npmjs.com/package/@kontent-ai/delivery-sdk) and [`@kontent-ai/management-sdk`](https://www.npmjs.com/package/@kontent-ai/management-sdk).
## HTTP Request Infrastructure
The SDK includes a default implementation of the `HttpService` and `HttpAdapter` components, which handle HTTP requests to the Kontent.ai APIs.
These implementations are designed to work out-of-the-box but are also fully customizable. Developers may replace them with custom versions to extend or override the default behavior, depending on specific application requirements.
## Customization Options
The `HttpService` comes with several built-in capabilities, such as:
- **Retry policies**
- **Request validation**
- **Automatic header and tracking management**
- **Kontent.ai-specific error extraction**
To customize these behaviors entirely, you can replace the `HttpService` with your own implementation.
However, if your goal is to retain the core features (e.g., retry policies, request validation) and only swap out the underlying HTTP client, you can do so by supplying a custom `HttpAdapter` to the `getDefaultHttpService` method.
## Example: Custom `HttpAdapter` Implementation
Below is an example demonstrating how to provide your own HTTP client by implementing a custom `HttpAdapter`:
```typescript
const httpService = await getDefaultHttpService({
adapter: {
requestAsync: async (options) => {
// Execute the request using your custom HTTP client
return {
isValidResponse: <true | false>,
responseHeaders: <arrayOfHeaders>,
status: <statusCode>,
statusText: <statusText>,
toJsonAsync: async () => <responseInJson>,
toBlobAsync: async () => <responseInBlob>,
};
},
},
});
```
This approach gives you fine-grained control over how requests are made, while still benefiting from the core service's additional functionalities.