Problème résolu par Diff Anything macOSWindows

Vérifier la compatibilité API, pas le mouvement YAML

Comparez OpenAPI et JSON Schema localement, repérez les changements probablement incompatibles et gardez vos contrats d’API sur votre ordinateur.

Voir dans l’application

Un flux de travail ciblé, sur votre ordinateur.

Aucun compte, service de comparaison cloud, analyse ou télémétrie.

Fusion à trois voies avec base, notre version, leur version et conflit à résoudre dans l’interface française de Diff Anything.
Fusion à trois voies avec base, notre version, leur version et conflit à résoudre dans l’interface française de Diff Anything.

Le problème

Pourquoi le flux de travail habituel constitue un obstacle.

Une différence de ligne peut donner l’impression que YAML ou JSON réorganisé est important tout en masquant les modifications de contrat qui peuvent interrompre un consommateur API existant : opérations supprimées, schémas plus restreints, paramètres modifiés ou nouvelles exigences.

La solution

Comment Diff Anything le gère.

Diff Anything analyse OpenAPI et JSON Schema en tant que contrats, étiquette les modifications incompatibles probables avec des codes de règle heuristiques et affiche un verdict et un décompte de modifications incompatibles. Avec Pro, la CLI et les manifestes de lot exécutent la même comparaison en CI, sous Windows ou, via l’outil en ligne de commande gratuit, sur Mac, et peuvent faire échouer la tâche uniquement en cas de modifications incompatibles ou non classées.

01 / Revue de contrat

Nommez correctement la référence et le candidat

La référence est le contrat que les consommateurs existants utilisent déjà ; le candidat est le remplaçant proposé. Cette direction est importante car la suppression d’une opération ou la réduction d’une valeur acceptée a un effet de compatibilité différent de celui de l’ajout d’une.

Conserver les versions sources disponibles lors de la révision. Une correspondance de règle constitue une preuve d’une décision de publication et ne remplace pas la compréhension du flux de travail du consommateur concerné.

02 / Revue de contrat

Séparer les ruptures probables des changements dépendants du contexte

Examinez d’abord les éléments du contrat supprimés ou nouvellement requis, puis examinez les modifications dont l’effet dépend du comportement du consommateur ou de la sémantique d’exécution. Les ajouts compatibles méritent toujours d’être examinés en cas de comportement non documenté ou de validation personnalisée.

La comparaison décrit le contrat qu’elle peut analyser. Le comportement d’exécution, la mise en œuvre du serveur et les attentes non documentées restent en dehors de cette preuve.

  • Commencez avec les chemins, opérations, paramètres, propriétés et valeurs d’énumération supprimés.
  • Examiner les nouvelles exigences et les types plus restreints.
  • Traitez le comportement sémantique comme une limite de révision humaine.

03 / Revue de contrat

Échec d’une tâche CI uniquement en cas de modifications incompatibles

Avec Pro, exécutez diff-anything --cli --mode api --fail-on breaking, ou définissez failOn: breaking pour un cas dans un manifeste de lot, sous Windows ou, avec l’outil en ligne de commande gratuit, sur Mac. Les schémas identiques ou équivalents passent, les modifications compatibles sont autorisées, et la tâche échoue en cas de modifications incompatibles et de modifications que les règles n’ont pas pu classer. Les sorties JUnit et SARIF listent chaque résultat avec son code de règle, comme API001 pour une opération supprimée.

Les règles sont heuristiques : $ref est comparé tel qu’écrit plutôt que résolu, les schémas de requête et de réponse sont traités de la même manière, et certaines modifications incompatibles ne sont pas classées, comme une entrée de composants supprimée, un paramètre renommé ou déplacé, ou des propriétés supplémentaires ajoutées : false. Considérez un contrôle de réussite comme une première porte, et non comme une preuve de compatibilité, et conservez la même direction de base localement et dans CI.

Des réponses claires

Questions courantes sur la comparaison locale des spécifications OpenAPI.

Une différence OpenAPI est-elle identique à une différence de texte ?

Non. La comparaison des contrats se concentre sur les opérations analysées, les paramètres, les schémas et les modifications orientées vers la compatibilité plutôt que sur le seul mouvement de la ligne source.

Le résultat peut-il être utilisé dans CI ?

Oui. Avec Pro, sous Windows ou via l’outil en ligne de commande gratuit sur Mac, --fail-on breaking ou un cas de lot avec failOn: breaking fait échouer la tâche uniquement en cas de modifications incompatibles ou non classées, et les schémas identiques passent. Les manifestes de lot produisent du JSON, du JUnit ou du SARIF avec le code de règle de chaque résultat. Les règles sont heuristiques : une revue du contrat reste donc nécessaire.

La comparaison prouve-t-elle la compatibilité d’exécution ?

Non. Le comportement d’exécution, la validation personnalisée, les attentes non documentées et la signification sémantique nécessitent toujours un examen et des tests humains.

Trois petites étapes

Comparez le contrat dont dépendent les clients.

  1. 01

    Ouvrir les contrats de référence et candidats.

  2. 02

    Laissez Auto choisir le mode Schéma API ou sélectionnez-le.

  3. 03

    Examinez d’abord les modifications signalées, puis vérifiez le reste du résultat.

Disponible pour macOS et Windows

Résolvez-le avec Diff Anything.