web-dev-qa-db-fra.com

Comment organisez-vous des contrats d'extrémité API

Lorsque vous essayez d'améliorer la "confiance", nous avons dans notre communication inter-service.

Contexte: "Contrats" est une question de partage d'un code de code qui définit une interface à mettre en œuvre, mais au fil des ans, le code partagé a changé, et de nombreuses implémentations différentes (savon, msmq, repos, etc.) ont germé, ce qui pourrait tous être dit pour mettre en œuvre la même interface, mais ne joue en aucun cas bien ensemble, avec la cartographie, qui a provoqué une forêt de microservices "cartographie" à être mis en œuvre, qui à nouveau apparaît dans différentes versions. Le développement et les opérations souffrent à la fois de cela.

Intention: Je voudrais définir des contrats pour les points d'extrémité à l'extérieur, en utilisant quelque chose comme Swagger ou API Shistprint. Avec Swagger, je peux comparer le "contrat" ​​Swagger.json avec le Swagger.json pour le service affirmant de la mettre en œuvre et avec l'API Blueprint, Theres "Dredd". Pour les transports basés sur MSMQ, nous aurons besoin d'une autre approche, mais je pense que les contrats de structure à l'intérieur des messages pourraient/doivent être conformes aux mêmes raisons que les points de terminaison HTTP.

Les détails sur la vérification de la façon dont la question n'est pas la question - la question est la suivante: comment organiseriez-vous ces contrats? Devrions-nous avoir un référentiel interne de contrats qui ne peuvent jamais être changés, mais ne se produisent que dans de nouvelles versions, puis à raconter le processus de vérification que les contrats sont (supposés) mis en œuvre? Ledit contrat-Repo devrait être lu-accessible par notre processus de vérification et nos développeurs (et externes) ...

Toute entrée concernant les problèmes décrits dans le contexte est appréciée, peut-être que je suis à la mauvaise façon pour une solution?

7
Julian

J'ai fini par faire cela, en utilisant des tests comme Dev-Documentation interne pour les contrats https://gist.github.com/julianmay/899d7cc7a82f1ca7c893547d37732f86

0
Julian