2017-03-06 1 views
0

J'ai lu que sur Pact, le consommateur est celui qui initie la requête. J'ai un service (appelons-le A) qui est utilisé pour dessiner des images qui seront ensuite soumises (via POST) à un service (appelons-le B) qui traitera ces entrées et générera des albums.Qui est le consommateur dans un scénario POST?

Ma question est: Si le service B est l'expert pour savoir quel type d'entrées et dans quel format devrait recevoir pour créer des albums, comment se fait-il que le service A soit le consommateur et donc celui qui rédigera le contrat ? Ne devrait-ce pas être le service B qui spécifie quel type de données devrait être reçu?

Répondre

0

de [1]:

Un composant qui initie une requête HTTP à un autre composant (le service Provider). Notez que cela ne dépend pas de la façon dont les données circulent - que ce soit un GET ou un PUT/POST/PATCH, le Consumer est l'initiateur de la requête HTTP.

Mais je pense que votre question demande vraiment tests de contrat axée sur la consommation [2]. Vous confondez qui construit le service avec l'expertise/compréhension des exigences pour son existence. Le consommateur sait ce dont il a besoin du service, et le fournisseur sait comment l'implémenter. Les contrats axés sur le consommateur inversent le processus de conception typique de l'API consistant à créer une API en premier, puis les consommateurs à l'utiliser. Premièrement, le consommateur spécifie ce dont il a besoin, publie les attentes en tant que contrat et le fournisseur l'implémente ensuite.

Pact suppose généralement ce mode, mais ce n'est pas strictement nécessaire (c'est-à-dire que l'API Provider peut exister à l'avance).

[1] https://docs.pact.io/documentation/how_does_pact_work.html
[2] https://martinfowler.com/articles/consumerDrivenContracts.html