Skip to main content
Les client adapters sont essentiels pour l’intégration avec des services tiers.• Ils assurent la transformation des entités de domaine de notre système vers les types spécifiques des APIs externes et vice versa• Cette transformation garantit que les données sont correctement formatées pour les requêtes et les réponses, facilitant ainsi une interaction fluide avec les services externes.

Fonctionnement des Client Adapters

Un client adapter suit une logique structurée :
1

Transformation vers le Type Tiers

Lors d’une requête POST, par exemple, un client adapter convertit une entité de domaine (telle qu’une Order) en un type compatible avec l’API externe (comme une HubriseOrder).
2

Transformation vers le Type de Domaine

Lors d’une requête GET, l’API externe renvoie des données dans son format propre. Le client adapter transforme ces données en entités de domaine utilisables par notre système.

Exemple de Client Adapter

Supposons que nous intégrions l’API Hubrise et que nous devions transformer une Order de notre système en une HubriseOrder et vice versa.
1

Définition des Types

interface Order {
  id: string;
  status: string;
  items: OrderItem[];
}

interface OrderItem {
  id: string;
  name: string;
  quantity: number;
}

interface HubriseOrder {
  id: string;
  status: string;
  items: HubriseItem[];
}

interface HubriseItem {
  id: string;
  name: string;
  quantity: number;
}
2

Implémentation du Client Adapter

class HubriseAdapter {
  static toHubriseOrder(order: Order): HubriseOrder {
    return {
      id: order.id,
      status: order.status,
      items: order.items.map((item) => ({
        id: item.id,
        name: item.name,
        quantity: item.quantity,
      })),
    };
  }

  static toDomainOrder(hubriseOrder: HubriseOrder): Order {
    return {
      id: hubriseOrder.id,
      status: hubriseOrder.status,
      items: hubriseOrder.items.map((item) => ({
        id: item.id,
        name: item.name,
        quantity: item.quantity,
      })),
    };
  }
}

Avantages des Client Adapters

1

Séparation des Responsabilités

• Les client adapters isolent la logique de transformation• Le code devient plus maintenable et modulaire• Chaque adapter a une responsabilité unique et claire
2

Réutilisabilité

• Les adapters sont réutilisés dans tous les clients• Assure une cohérence dans les transformations• Évite la duplication de code de transformation
3

Cohérence

• Garantit le bon format des données pour les requêtes• Minimise les erreurs de formatage• Maintient une transformation cohérente des données