Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes
Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes Par Thierry-Leriche-Dessirier Date de publication : 14 octobre 2019 Vert.x est une API asynchrone très proche du modèle d'acteurs. Vert.x est polyglotte, simple, scalable (élastique) et hautement concurrente. Vert.x est bien adapté aux architectures en microservices. Dans cet article rapide, nous allons voir comment créer une API standard avec Vert.x. Et pour cela, on se donne 5 minutes… Commentez Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes par Thierry-Leriche-Dessirier I - Introduction..............................................................................................................................................................3 II - Domaine................................................................................................................................................................. 3 III - Créer un serveur...................................................................................................................................................4 III-A - Installation.................................................................................................................................................... 4 III-B - Le verticle en charge de l'API..................................................................................................................... 4 III-C - Ecouter un port............................................................................................................................................5 IV - Notre API naïve....................................................................................................................................................6 IV-A - Charger une liste d'objets............................................................................................................................6 IV-B - Charger un seul objet..................................................................................................................................9 IV-C - Envoyer une erreur....................................................................................................................................10 IV-D - Créer un objet........................................................................................................................................... 11 IV-E - Modifier un objet........................................................................................................................................13 IV-F - Supprimer un objet.................................................................................................................................... 14 V - Réorganiser le routeur.........................................................................................................................................16 VI - Conclusions.........................................................................................................................................................17 VII - Remerciements..................................................................................................................................................17 VIII - Annexes............................................................................................................................................................ 17 VIII-A - Liens.........................................................................................................................................................17 VIII-B - Codes complets....................................................................................................................................... 17 - 2 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2019 Thierry-Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. http://thierry-leriche-dessirier.developpez.com/tutoriels/java/creer-api-rest-vertx-5-minutes/ Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes par Thierry-Leriche-Dessirier I - Introduction Créer une API en Java est un sujet déjà largement traité. Si vous utilisez Jersey et ses annotations, vous savez que c’est très simple et rapide à mettre en place. Dans cet article, je voudrais simplement vous montrer ce qu’on peut faire avec Vert.x en revenant aux fondamentaux. Et en vérité, la création d’une API sera avant tout un prétexte. II - Domaine Si vous lisez régulièrement mes articles, vous savez qu’ils parlent tous de chiens. C’est un domaine simple qui ne nécessite pas de longues explications. Le bean Dog suivant sera suffisant pour cette chronique. Dog.java 1. public class Dog { 2. private final String id; 3. private final String name; 4. private final String race; 5. private final int age; 6. // Constructeur 7. public Dog(final String id, final String name, final String race, final int age) { 8. super(); 9. this.id = id; 10. this.name = name; 11. this.race = race; 12. this.age = age; 13. } 14. // 15. // + getters Je vous propose également DogService qui fera office de service, avec les opérations classiques. Un code complet naïf est donné en annexes. DogService.java 1. public class DogService { 2. // Charcher la liste des chiens 3. public List<Dog> findAll() { 4. ... 5. } 6. // Chercher un seul chien 7. public Dog findById(final String id) { 8. ... 9. } 10. // Mettre à jour un chien 11. public Dog update(final Dog dog) { 12. ... 13. } 14. // Effacer un chien 15. public void remove(final String id) { 16. ... 17. } 18. // Ajouter un chien 19. public Dog add(final Dog dog) { 20. ... 21. } Et finalement, je vous propose d’initialiser une liste d’exemples composée des chiens célèbres. DogService.java 1. public class DogService { 2. private final Map<String, Dog> dogs = new HashMap<String, Dog>(); 3. // Constructeur 4. public DogService() { 5. super(); 6. initDogs(); - 3 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2019 Thierry-Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. http://thierry-leriche-dessirier.developpez.com/tutoriels/java/creer-api-rest-vertx-5-minutes/ Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes par Thierry-Leriche-Dessirier DogService.java 7. } 8. // Initialisation des chiens fictifs 9. private void initDogs() { 10. // Création de chiens fictifs 11. final Dog lassie = new Dog("12345fh", "Lassie", "colley", 12); 12. final Dog milou = new Dog("e7654", "Milou", "fox-terrier", 11); 13. final Dog scoobydoo = new Dog("s93d78", "Scooby-Doo", "Danois", 7); 14. final Dog idefix = new Dog("6222mk9p", "Idefix", "Bichon", 17); 15. // Ajouts dans la map 16. dogs.put(lassie.getId(), lassie); 17. dogs.put(milou.getId(), milou); 18. dogs.put(scoobydoo.getId(), scoobydoo); 19. dogs.put(idefix.getId(), idefix); 20. } III - Créer un serveur III-A - Installation Comme souvent, le plus simple va être de passer par Maven, Gradle, etc. Dans cet article, nous allons utiliser Maven, mais sentez-vous libre d’utiliser votre système préféré. Nous allons donc ajouter une dépendance à Vert.x dans le fichier pom.xml. Vert.x est modulaire. Nous pouvons donc indiquer précisément les dépendances qui nous intéressent, à commencer par vertx-core. Et puisque nous allons développer pour le web, nous ajouterons également vertx-web, le module dédié. pom.xml 1. <dependency> 2. <groupId>io.vertx</groupId> 3. <artifactId>vertx-core</artifactId> 4. <version>${vertx.version}</version> 5. </dependency> 6. <dependency> 7. <groupId>io.vertx</groupId> 8. <artifactId>vertx-web</artifactId> 9. <version>${vertx.version}</version> 10. </dependency> III-B - Le verticle en charge de l'API Contrairement à ce que vous verrez dans d’autres tutoriels, je préfère séparer mes verticles de mon main. Je vous encourage à faire de même dans vos applications. On va donc créer MyApiVerticle. Pour cela, il suffit d’hériter de AbstractVerticle et de réécrire les methodes start() et stop(). Demandez à votre IDE de le faire pour vous. MyApiVerticle.java 1. import io.vertx.core.AbstractVerticle; 2. public class MyApiVerticle extends AbstractVerticle { 3. // Quand le verticle se lance 4. @Override 5. public void start() throws Exception { 6. } 7. // Quand le verticle s'arrête 8. @Override 9. public void stop() throws Exception { 10. } On va en profiter pour ajouter des logs. Vert.x fournit ses propres classes, mais rien ne vous empêche d’utiliser une autre bibliothèque, comme Flogger dont je parlais dans un précédent article, sobrement intitulé « Tutoriel pour logguer facilement, en Java à l'aide de Flogger, en 5 minutes ». - 4 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2019 Thierry-Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. http://thierry-leriche-dessirier.developpez.com/tutoriels/java/creer-api-rest-vertx-5-minutes/ Tutoriel pour apprendre à créer une API REST, avec Java et Vert.x, en 5 minutes par Thierry-Leriche-Dessirier MyApiVerticle.java 1. import io.vertx.core.logging.Logger; 2. import io.vertx.core.logging.LoggerFactory; 3. public class MyApiVerticle extends AbstractVerticle { 4. private static final Logger LOGGER = LoggerFactory.getLogger(MyApiVerticle.class); 5. // Quand le verticle se lance 6. @Override 7. public void start() throws Exception { 8. LOGGER.info("Dans le start..."); 9. } 10. // Quand le verticle s'arrête 11. @Override 12. public void stop() throws Exception { 13. LOGGER.info("Dans le stop..."); 14. } Il ne reste plus qu’à lancer le verticle depuis le main, de la même façon que dans mes autres articles dédiés à Vert.x. App.java 1. import io.vertx.core.Vertx; 2. public class App { 3. public static void main(String[] args) { 4. System.out.println("App..."); 5. final Vertx vertx = Vertx.vertx(); 6. vertx.deployVerticle(new MyApiVerticle()); 7. } Il faut ensuite exécuter le programme et regarder les logs dans la console. Console 1. App... 2. sept. 1, 2019 10:10:49 AM com.ice.articlevertxapi.MyApiVerticle 3. INFOS: Dans le start... III-C - Ecouter un port On y est presque. Avant d’entrer dans le vif du sujet, je vous propose d’écrire un simple Hello World accessible depuis le navigateur. Il faut simplement créer un serveur, depuis la variable vertx fournie par AbstractVerticle. Dans le cas du Hello World, la lambda fournie au RequestHandler est très simple. Enfin, je vous propose d’écouter sur le port 8080. MyApiVerticle.java 1. @Override 2. public void start() throws Exception { 3. LOGGER.info("Dans le start..."); 4. vertx.createHttpServer() 5. .requestHandler(routingContext -> routingContext.response().end("Hello World!")) 6. .listen(8080); 7. } Il ne reste plus à rechercher l'adresse http://localhost:8080/ dans votre navigateur. - 5 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2019 Thierry-Leriche-Dessirier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. http://thierry-leriche-dessirier.developpez.com/tutoriels/java/creer-api-rest-vertx-5-minutes/ Tutoriel pour apprendre à créer une API REST, avec Java et uploads/Litterature/ creer-api-rest-vertx-5-min.pdf
Documents similaires










-
33
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 03, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 3.6774MB