Participation à l'événement communautaire Java "JJUG CCC 2019 Fall". L'histoire de la création d'un OpenAPI super simple inspiré du contenu du "développement de serveur API utilisant la spécification OpenAPI 3.0 qui n'est pas Swagger" que j'ai entendu là-bas. (Peu profond)
Écrire une API ouverte à l'aide de Spring Boot
Règle: ** Modèle d'écart de génération ** → Ne modifiez pas le fichier de classe généré automatiquement.
Utiliser l'exemple dans OAS (OpenAPISpecification)
https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml
Utilisez le plug-in de Gradle [openapi-generator-gradle-plugin]. Plug-in Gradle qui génère automatiquement du code à partir du fichier de définition d'API.
build.gradle
plugins {
id "org.openapi.generator" version "4.2.1"
}
Défini pour inclure les fichiers de classe générés automatiquement au moment de la compilation
build.gradle
compileJava.dependsOn tasks.openApiGenerate
sourceSets.main.java.srcDir "${openApiGenerate.outputDir.get()}/src/main/java"
sourceSets.main.resources.srcDir
Presque une copie de l'exemple d'exécution de openapi-generator-gradle-plugin est OK. Manipulez simplement le fichier de configuration pour créer une interface.
build.gradle
//https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-gradle-plugin
openApiGenerate {
generatorName = "spring"
//Paramètres de configuration
configFile = "$rootDir/specs/config.json".toString()
//Exemple de spécification d'API
inputSpec = "$rootDir/specs/petstore-v3.0.yaml".toString()
outputDir = "$buildDir/generated".toString()
apiPackage = "org.openapi.example.api"
invokerPackage = "org.openapi.example.invoker"
modelPackage = "org.openapi.example.model"
configOptions = [
dateLibrary: "java8"
]
systemProperties = [
modelDocs: 'false'
]
}
config.json
{
"interfaceOnly": true
}
La génération automatique de classe est OK avec la tâche de Gradle [openApiGenerate].
Lorsque la tâche est exécutée, le fichier Java suivant est automatiquement généré
Générer un contrôleur en implémentant à partir d'une interface générée automatiquement
PetsApiController.java
@RestController
public class PetsApiController implements PetsApi{
@Override
public ResponseEntity<List<Pet>> listPets(@Valid Integer limit) {
System.out.println("Here list pet");
return new ResponseEntity<>(HttpStatus.OK);
}
}
Achevée! !!
https://github.com/harutotanabe09/SpringBootOpenAPIBegin
Les documents sont automatiquement générés à l'aide de l'outil de document OpenAPI (redoc).
docker run -it --rm -p 80:80 \
-v $(pwd)/specs/petstore-v3.0.yaml:/usr/share/nginx/html/swagger.yaml \
redocly/redoc
http://localhost/
Image de sortie: affichez les paramètres d'API et renvoyez les valeurs sur un écran facile à lire basé sur le fichier de définition
Développement de serveur API avec la spécification OpenAPI 3.0, pas Swagger https://www.slideshare.net/techblogyahoo/swagger-openapi-specification-30-api
Recommended Posts