Génération récente de spécification d'API Java

Cet article est une réimpression de ce qui a été publié sur Blog.


Je l'ai résumé du point de vue de la génération récente de spécifications d'API Java.

Pourquoi s'agit-il d'une spécification API?

Orienté objet a le concept d'encapsulation, et la structure est telle que la valeur attendue est renvoyée lorsqu'une méthode de classe est appelée. Cependant, si vous ne savez pas à l'avance ce qu'il faut passer en argument, quel type de valeur sera retournée, quel type de traitement d'exception se produira en cas d'anomalie, etc., le code sera dispersé de manière ponctuelle. Ce sera. Par conséquent, il est judicieux de définir correctement l'API afin que les utilisateurs puissent utiliser des méthodes de classe sans gaspillage et en toute tranquillité d'esprit. C'est pourquoi les spécifications API sont nécessaires.

Utilisation de JavaDoc

De là, expliquons la procédure de génération des spécifications API actuellement utilisées dans le projet.

Tout d'abord, JavaDoc que tout le monde connaît. Générez des spécifications d'API basées sur des commentaires au format JavaDoc. Puisque le projet utilise Maven, j'essaie de le générer à partir de la commande mvn.

Extrait partiel de pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
                <defaultVersion>${project.version}</defaultVersion>
                <sourcepath>target/generated-sources/delombok</sourcepath>
            </configuration>
        </plugin>
    </plugins>
</build>

La commande mvn pour générer les spécifications d'API est la suivante.

$ mvn javadoc:javadoc

Une fois le traitement terminé, les fichiers HTML seront générés dans target \ site \ apidocs. Voir la phrase suivante pour la raison pour laquelle le code source se trouve dans sourcepath.

Assistance pour Lombok

Le projet utilise Lombok pour simplifier la description standard des beans et des DI. Étant donné que la description Lombok est convertie en code Java au moment de la compilation, il n'est pas nécessaire d'amener la bibliothèque Lombok sur le serveur d'applications à la destination de la construction. C'est un outil indispensable pour le développement Java.

Cependant, lors de la génération de spécifications avec JavaDoc, la description Lombok n'est pas soumise aux spécifications de l'API. Par conséquent, il est nécessaire de convertir temporairement la description de Lombok en code Java (cela s'appelle officiellement delombok). En spécifiant le code source complété par delombok comme emplacement du code source JavaDoc, vous pouvez générer une spécification d'API précise sans omission. Si vous le compilez avec la commande mvn, il sera automatiquement supprimé.

Extrait partiel de pom.xml

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>delombok</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <addOutputDirectory>false</addOutputDirectory>
                <sourceDirectory>src/main/java</sourceDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

La commande mvn pour exécuter delombok est la suivante.

$ mvn compile

Une fois la compilation terminée, le code source delombok sera généré dans target / generate-sources / delombok.

Utilisation de Swagger

Le traitement côté serveur par communication asynchrone est devenu un problème majeur dans les applications WEB récentes. Bien sûr, il existe de nombreux cas où une API REST est fournie, et même compte tenu de cette situation, il est souhaitable de créer une spécification d'API REST. Le projet intègre actuellement Swagger. Swaggaer a été adopté par Amazon API Gateway et Azure API Management, il est donc presque en train de devenir la norme de facto. Il est prudent d'adopter Swagger à ce stade. Générez les spécifications de l'API REST à l'aide du plug-in Swagger de Maven publié par des bénévoles.

Extrait partiel de pom.xml

<dependencies>
    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-annotations</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>com.github.kongchen</groupId>
            <artifactId>swagger-maven-plugin</artifactId>
            <configuration>
                <apiSources>
                    <apiSource>
                        <springmvc>false</springmvc>
                        <locations>com.shdsd.plugin.label.printer.rest</locations>
                        <info>
                            <title>${project.name} API</title>
                            <version>${project.version}</version>
                        </info>
                        <templatePath>${project.basedir}/src/test/resources/strapdown.html.hbs</templatePath>
                        <outputPath>${project.basedir}/target/generated/document.html</outputPath>
                        <swaggerDirectory>${project.basedir}/target/swagger-ui</swaggerDirectory>
                    </apiSource>
                </apiSources>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

La commande mvn pour exécuter delombok est la suivante.

$ mvn compile

Target / generated / document.html sera généré après la compilation. Veuillez obtenir les fichiers à placer dans templatePath à partir de api-doc-template / v3.0.

finalement

La technologie informatique devient très populaire et obsolète, de sorte que le contenu décrit ici peut être mis à jour après un certain temps.

Recommended Posts

Génération récente de spécification d'API Java
API Java Stream
Génération de séquence Java
Mémo de spécification Java
Emballez la réponse de l'API (java)
[Java] Génération de flux API-Stream
[Java] API / carte de flux
Dépannage de l'API Java Docker-Client
Pratique de l'API Java8 Stream
API Zabbix en Java
[Java] Génération de mot de passe (Pasay)
[Java] Nouvelle méthode de génération de threads (2)
Aide-mémoire de l'API Java Stream
API Java Stream en 5 minutes
[Java] Stream API - Traitement de l'arrêt du flux
[Java] Stream API - Traitement intermédiaire de flux
[Java] Méthode de génération aléatoire (aléatoire)
[Java] Introduction à l'API Stream
[Java Silver] Comment générer un tableau
Contenu d'apprentissage de base Java 8 (API Java)
[Java] Opération intermédiaire de l'API Stream
[java8] Pour comprendre l'API Stream
Exporter un problème à l'aide de l'API Java de JIRA
[Introduction à Java] À propos de l'API Stream
Paramètre de délai d'expiration de l'API du client HTTP Java
Générer l'URL de l'API CloudStack en Java
Hit l'API de Zaim (OAuth 1.0) en Java
J'ai essayé d'utiliser l'API Java8 Stream
Analyser l'analyse syntaxique de l'API COTOHA en Java
Appelez l'API Java de TensorFlow depuis Scala
Java 8 ~ Stream API ~ pour commencer maintenant
JPA (API de persistance Java) dans Eclipse