Cet article vise à décrire comment Kotlin et Spring Boot peuvent travailler ensemble pour créer un service capable de télécharger/télécharger des fichiers à l’aide de Spring Web. MultipartFile
interface.
Ce didacticiel étape par étape est écrit en fonction des exigences suivantes :
- Système d’exploitation : macOS Catalina 10.15.7
- Version Java : version OpenJDK « 11.0.16 »
- IntelliJ IDEA : 2022.2.2 (édition communautaire)
- Kotlin : 1.7.10
Botte de printemps est un framework open source utilisé pour créer des microservices. Il a été développé par l’équipe Pivotal et est utilisé pour créer des applications Spring autonomes et prêtes pour la production. C’est devenu l’approche standard lors du développement d’API REST dans les technologies basées sur JVM. Spring Boot aide les développeurs en supprimant une grande partie du code passe-partout et permet la configuration automatique de divers composants.
Kotlin est un langage de programmation « pragmatique » à usage général, gratuit, open source, typé statiquement, créé par JetBrains. Kotlin combine des fonctionnalités de programmation orientées objet et fonctionnelles et il est conçu pour interagir pleinement avec Java, et la version JVM de la bibliothèque standard de Kotlin dépend de la bibliothèque de classes Java.
Ce didacticiel vise à fournir une référence pratique rapide pour créer un service REST afin de faciliter le téléchargement de fichiers.
Notre service Spring Boot basé sur Kotlin offrira les terminaux d’API suivants :
- Téléchargez un fichier dans un dossier du serveur.
- Téléchargez un fichier à partir du serveur avec le lien.
Le moyen le plus simple de créer un projet Spring Boot consiste à le configurer et à le télécharger à partir de https://start/spring.io
Une fois le projet importé dans votre IDE, nous pouvons mettre à jour le pom.xml
dossier. À savoir, nous devons ajouter la dépendance suivante pour fournir à notre projet des fonctionnalités Web.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
De plus, nous incluons une autre dépendance pour simplifier la configuration et l’utilisation des fonctionnalités de journalisation dans l’application.
<!-- To use Kotlin logger. The level is configured in applications.properties -->
<dependency>
<groupId>io.github.microutils</groupId>
<artifactId>kotlin-logging-jvm</artifactId>
<version>3.0.0</version>
</dependency>
Structure du projet
Puisque nous développons un service qui se veut évolutif et maintenable, nous avons décidé d’organiser notre code source en différentes couches. Comme suit, il est affiché les couches (controller
, service
et data
dossiers) ainsi que les fichiers de code source inclus dans chaque dossier.
Couche de données
Cette couche contient toutes les classes utilisées pour stocker les informations échangeables pertinentes. Pour ce projet particulier, nous avons créé le classe de données Response
qui encapsule un message à envoyer à l’utilisateur après avoir appelé une opération d’API.
Couche de service
La couche service s’occupera de la logique métier de notre application. Il se compose de deux fichiers.
UploadFileService
: Une interface où sont définies les méthodes nécessaires.UploadFileServiceImpl
: Une classe implémentant les méthodes définies dans l’interface. Comme recommandé par Spring, la mise en œuvre du service doit être annotée avec@Service
.
Voici le code source de l’interface de service et de l’implémentation.
Remarque : à des fins d’apprentissage et de simplicité, nous avons décidé d’utiliser
runCatching
dans cet exemple de projet comme approche fonctionnelle pour gérer les exceptions. Cependant, avant de décider d’utiliser ce code pour vos projets, je vous recommande de vérifier les limitations et les cas d’utilisation de runCatching.
Couche contrôleur
Une fois définie la logique métier de notre application, nous devons exposer notre API aux utilisateurs via des endpoints REST. La couche contrôleur nous permet d’offrir de tels terminaux de manière simple. Notre projet définit deux opérations :
| Operation | Url | Method |
| ------------- | ------------------ |--------|
| upload file | /api/upload-file | POST |
| download file | /api/download | GET |
Comme suit le code source pour le UploadFileController.kt
fichier est décrit.
Point d’entrée des candidatures
Après avoir défini les endpoints REST, il suffit de mettre à jour le point d’entrée de l’application, le fichier UploadFilesServiceApplication.kt
.
Puisque nous devons effectuer certaines actions la première fois que le service démarre, nous faisons en sorte que la classe implémente le CommandLineRunner
interface. En conséquence, nous sommes obligés d’implémenter la méthode run, où la méthode init
du service est invoqué. Cela créera le dossier dans lequel les fichiers téléchargés sont censés être stockés.
Configuration des microservices
Enfin, nous devons définir certaines propriétés en éditant le application.properties
dossier. Comme indiqué ci-dessous, nous utiliserons ce fichier pour définir des propriétés telles que le port sur lequel le serveur sera exécuté, le niveau de journalisation, ainsi que certains paramètres liés au téléchargement (taille maximale du fichier, taille maximale de la demande et prise en charge multipartie activée)
La seule tâche manquante est donc d’exécuter le service. Pour ce faire, accédez simplement à votre terminal et exécutez ce qui suit à partir de votre dossier de projet.
> mvn spring-boot:run
Une fois le service opérationnel, nous utiliserons Facteur pour vérifier que notre serveur de démarrage Spring fonctionne comme prévu.
Tout d’abord, nous allons télécharger un fichier comme indiqué dans l’image ci-dessous.
Après avoir téléchargé le fichier avec succès, nous invoquerons une méthode HTTP GET avec l’URL indiquée ci-dessous pour le télécharger. Si tout a bien fonctionné, Postman devrait afficher le contenu du fichier (dans le cas de fichiers txt) ou il vous proposera de le télécharger en cliquant sur Enregistrer dans un fichier bouton.
Enfin, nous testons la réponse de notre serveur lorsque le fichier demandé n’est pas disponible au téléchargement. Ainsi, comme indiqué ci-dessous, l’utilisateur reçoit une erreur 417 et un message JSON indiquant que le fichier demandé n’existe pas.
Et c’est tout, cet article vise à être juste un tutoriel d’introduction sur la façon de gérer les téléchargements/téléchargements de fichiers à l’aide de Kotlin et Spring Boot. Il existe encore de nombreuses fonctionnalités et fonctionnalités avancées sur ce sujet (comme le stockage de fichiers de base de données ou la gestion de plusieurs téléchargements simultanés). S’il vous plaît, laissez un commentaire si vous voulez voir une deuxième partie de l’article expliquant un sujet particulier.
Si vous avez des commentaires ou des suggestions, ou si vous trouvez quelque chose qui ne va pas, j’apprécierais vos commentaires. Sinon, j’espère que ce tutoriel vous a aidé à démarrer avec la gestion des fichiers à l’aide de Kotlin et SpringBoot.