---
editLink: false
lastUpdated: false
---

[@salesforce/b2c-tooling-sdk](../../modules.md) / [clients](../index.md) / HttpMiddlewareProvider

# Interface: HttpMiddlewareProvider

Defined in: [packages/b2c-tooling-sdk/src/clients/middleware-registry.ts:116](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/clients/middleware-registry.ts#L116)

Middleware provider that supplies middleware for HTTP clients.

Providers can return different middleware for different client types,
or return `undefined` to skip certain client types.

## Example

```typescript
const provider: HttpMiddlewareProvider = {
  name: 'metrics-collector',
  getMiddleware(clientType) {
    // Only collect metrics for OCAPI calls
    if (clientType !== 'ocapi') return undefined;

    return {
      onRequest({ request }) {
        (request as any)._startTime = Date.now();
        return request;
      },
      onResponse({ request, response }) {
        const duration = Date.now() - (request as any)._startTime;
        recordMetric('ocapi_request_duration', duration);
        return response;
      },
    };
  },
};
```

## Properties

### name

> `readonly` **name**: `string`

Defined in: [packages/b2c-tooling-sdk/src/clients/middleware-registry.ts:120](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/clients/middleware-registry.ts#L120)

Human-readable name for the provider (used in logging/debugging).

## Methods

### getMiddleware()

> **getMiddleware**(`clientType`): `Middleware` \| `undefined`

Defined in: [packages/b2c-tooling-sdk/src/clients/middleware-registry.ts:128](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/e7c16f1ae423da0aa47b3e10be88f9770b53619b/packages/b2c-tooling-sdk/src/clients/middleware-registry.ts#L128)

Returns middleware for a specific client type.

#### Parameters

##### clientType

[`HttpClientType`](../type-aliases/HttpClientType.md)

The type of HTTP client requesting middleware

#### Returns

`Middleware` \| `undefined`

Middleware to apply, or undefined to skip this client type
