2017-07-07 4 views
5

Par défaut, pour "type": "boolean" dans la spécification JSON, Swagger génère un champ Boolean (objet, non-primitif, nullable) dans le modèle. Existe-t-il un moyen de faire en sorte que Swagger génère des champs boolean (primitifs, non-nullables) dans les modèles à la place?Rendre Swagger utiliser la primitive int et boolean dans les modèles générés

La raison d'être est: Spring MVC va initialiser ces champs avec null sur entrée invalide, ce qui est tellement indésirable. Mieux vaut les garder avec les valeurs par défaut.

Même question avec int par rapport à Integer. NB: Swagger a son propre concept de type "primitif" qui n'a aucun rapport avec les primitives Java et n'est pas ce que je cherche.

+0

Utilisez-vous springfox? –

+0

@DmitrySenkovich Non, et je ne sais pas ce que c'est – alamar

+0

J'ai décidé de faire une recherche pour les deux cas de toute façon :) –

Répondre

7

On dirait que c'est impossible. J'ai jeté un coup d'oeil à swagger-core et springfox (Swagger pour API basé sur le printemps)

La chose que j'ai faite est juste trouvé le code source pour convertir/traduire les types primitifs. J'ai trouvé PrimitiveType enum. Comme vous pouvez le voir, aucun type Java primitif n'est mentionné, tous les types swagger sont mappés aux wrappers Java. En tenant compte du fait que cette énumération est utilisée en interne et ne peut pas être remplacée (sauf si vous faites votre propre version), je suppose qu'il est impossible de changer ce type de comportement de résolution.

Idem dans springfox. J'ai trouvé TypeNameExtractor qui utilise fasterxml classe TypeResolver pour résoudre les types. Cette classe à son tour utilise ResolvedPrimitiveType pour obtenir le mappage de type. Comme vous pouvez le voir, la résolution de type est aussi assez profonde, donc je suppose qu'il n'y a pas moyen de le changer d'une manière ou d'une autre.

J'espère que vous trouverez mes conclusions utiles.