Blog

It's minimal, but I'm posting things.


Script utilitaire pour générer automatiquement les clients HTTP Python à partir du fichier de spécification OpenAPI.

Note: la génération de code en python est peu robuste.
J'ai constaté des problèmes d'échappement d'apostrophes simples.
On nous force à utiliser une validation des modèles auto-générées via pydantic.

Seul un parmi les six générateurs Python fournis sont compatibles avec pydantic v1.
Gros soucis de mapping d'un type primitif datetime définit tel que date dans un payload json.
A essayer dans avec autre language davantage standardisé.

Globalement une perte de temps pour un projet serieux ou enterprise.

#!/bin/sh

# ------------------------------
# Script utilitaire pour générer automatiquement les clients HTTP Python à partir du fichier de spécification OpenAPI.
# @author Kévin COJEAN
# ------------------------------

# À changer selon votre cas d'utilisation.
generatorEngine="python-pydantic-v1"
additionalProperties="library=asyncio"
specificationFilePath="open-api-without-deprecated-paths.yml"
outputDirPath="generated"
openApiGitHubProjectPath=/tmp/openapi-generator

# Constants
openApiGeneratorVersion="v7.10.0"
builtJar="$openApiGitHubProjectPath/modules/openapi-generator-cli/target/openapi-generator-cli.jar"

# Pour obtenir la documentation et additionalProperties spécifiques au generatorEngine utilisé, exécuter la commande suivante:
# java -jar "$builtJar" config-help -g $generatorEngine

set -e

# Run this once
#git clone https://github.com/OpenAPITools/openapi-generator.git /tmp/openapi-generator
#git -C "$openApiGitHubProjectPath" checkout "$openApiGeneratorVersion"
#mvn -f "$openApiGitHubProjectPath/pom.xml" clean package -DskipTests -Dmaven.javadoc.skip=true

# Valide la structure du fichier de spécification
#java -jar "$builtJar" validate

/bin/rm "$outputDirPath" -rf

# Génére les clients HTTP Python à partir de la spécification OpenAPI.
java -jar "$builtJar" \
   generate \
   -g "$generatorEngine" \
   -i "$specificationFilePath" \
   -o "$outputDirPath" \
   --additional-properties "$additionalProperties" \
   --global-property generateAliasAsModel=false,apis,models,supportingFiles,apiDocs=false,modelDocs=false,modelTests=false,apiTests=false \


Published on 2025-02-21T14:41:20.153792Z
Last updated on 2025-02-21T14:41:20.153792Z