[JAVA] Mappez automatiquement DTO aux entités avec l'API Spring Boot

Ce blog montre comment ModeMapper peut aider à automatiser le processus de paping DTO aux entités sur l'API Spring Boot, à l'aide d'exemples de sources. La seconde partie explique également comment utiliser Auth0 pour protéger et autoriser l'API Spring Boot résultante.

スクリーンショット 2019-03-15 11.03.31.png

Qu'est-ce que DTO?

DTO représente un objet de transfert de données et est un modèle de conception qui a eu l'idée de réduire le nombre d'appels lorsque vous travaillez sur une interface distante. Comme le définit Martin Fowler dans blog, la principale raison d'utiliser des objets de transfert de données est de combiner plusieurs appels distants en un seul lot. est.

Par exemple, disons que vous communiquez avec une API RESTful qui expose des données de compte bancaire. Dans ce cas, au lieu d'émettre plusieurs demandes pour vérifier les transactions de compte actuelles et à jour, la banque peut publier un point de terminaison qui renvoie un DTO pour tout résumer. Cette interface à grain grossier peut grandement contribuer à améliorer les performances, car l'une des opérations les plus coûteuses pour les applications distantes est le temps d'aller-retour entre le client et le serveur.

API DTO et Spring Boot

Un autre avantage de l'utilisation de DTO avec des API RESTful écrites en Java (et Spring Boot) est utile lors du masquage des détails d'implémentation pour les objets de domaine (également appelés entités). La publication d'une entité via un point de terminaison est un problème de sécurité si vous ne faites pas attention aux propriétés que vous modifiez via quelles opérations.

À titre d'exemple, imaginez une API Java qui expose les détails de l'utilisateur et permet aux utilisateurs de se mettre à jour via deux points de terminaison. Le premier point de terminaison traite la demande GET et renvoie les données utilisateur. Le deuxième point de terminaison accepte alors la demande PUT pour mettre à jour ces détails. Si cette application n'utilise pas DTO, toutes les propriétés de l'utilisateur seront exposées sur le premier point de terminaison (par exemple, mot de passe) et le deuxième point de terminaison sélectionnera soigneusement les propriétés à accepter lors de la mise à jour de l'utilisateur. Doit (par exemple, tout le monde ne peut pas mettre à jour le rôle d'un utilisateur). Pour surmonter cette situation, le DTO aide à exposer uniquement à quoi sert le premier point de terminaison et à limiter ce que le deuxième point de terminaison accepte. Cette propriété permet de maintenir l'intégrité des données dans l'application.

Dans cet article, nous utiliserons le DTO pour gérer cette situation. Comme nous le verrons plus tard, ce modèle de conception introduit quelques classes supplémentaires dans votre application, mais avec une sécurité améliorée.

La suite de ce blog est expliquée à l'URL suivante. Mapper automatiquement DTO à l'entité avec l'API Spring Boot

Plateforme d'authentification intégrée Auth0

Auth0 est un fournisseur appelé IDaaS (Identity as a Service) qui fournit des services d'authentification / d'autorisation pour les applications Web, les appareils mobiles, les API, etc. dans le cloud. Nous proposons une solution recommandée pour ceux qui souhaitent intégrer l'authentification, l'autorisation et la sécurité des utilisateurs dans les applications Web d'entreprise, les API, les applications mobiles natives, etc., mais elle est difficile à mettre en œuvre.

Publication d'exemples de sources pour diverses plates-formes sur Github

Auth0 publie des exemples de programmes pour divers frameworks de plate-forme sur Github, y compris les exemples de programmes utilisés dans ce didacticiel. En plus de l'API Spring Boot introduite cette fois, nous avons publié des sources pour de nombreux frameworks, alors pourquoi ne pas l'essayer? Dépôt Github --Auth0

Pour utiliser réellement Auth0

Le service Auth0 peut être évalué gratuitement (essai gratuit: 22 jours) sans contrat. Pour l'essai gratuit, accédez à la page d'accueil Auth0 et <A HREF = "https://auth0.com" en haut à droite de l'écran. / signup? utm_campaign = qiita_auth0_aspnet_core & utm_source = qiita "> <img width =" 123 "alt =" Capture d'écran 2017-09-07 21.59.09.png "src =" https: //qiita-image-store.s3.amazonaws. Vous pouvez vous inscrire à un essai en cliquant sur com / 0/189613 / c0ffbce4-d802-6fdd-ea2a-aa4a7ccd775b.png "> . Vous pouvez vous inscrire en utilisant votre compte Gitgub, Google ou Microsoft pour vous inscrire en tant qu'utilisateur, alors pourquoi ne pas l'essayer?

Recommended Posts

Mappez automatiquement DTO aux entités avec l'API Spring Boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Essayez d'implémenter la fonction de connexion avec Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Créer un serveur API Web avec Spring Boot
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Télécharger avec Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Hello World (API REST) avec Apache Camel + Spring Boot 2
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Tentative de SSR Vue.js avec Spring Boot et GraalJS
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Implémenter GraphQL avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Introduction à Spring Boot ① ~ DI ~
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Introduction à Spring Boot ② ~ AOP ~
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Lier l'API avec Spring + Vue.js
Introduction à Spring Boot, partie 1
Créer un micro service avec Spring Boot
Envoyer du courrier avec Spring Boot
Sortez le journal d'accès Tomcat intégré à la sortie standard avec Spring Boot
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Application Layer)
Implémenter l'API REST avec Spring Boot et JPA (couche d'infrastructure)
Découpez SQL en fichier de propriété avec jdbcTemplate of spring boot
Faisons une API simple avec EC2 + RDS + Spring boot ①
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Comment appeler et utiliser l'API en Java (Spring Boot)
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Connectez-vous à la base de données avec spring boot + spring jpa et effectuez l'opération CRUD
Flux jusqu'à la sortie des données de la table à afficher avec Spring Boot
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Utiliser l'authentification de base avec Spring Boot
Spring avec Kotorin - 4 Conception d'API REST
Introduction à Spring Boot x Open API ~ Open API créée avec le modèle d'écart de génération ~
gRPC sur Spring Boot avec grpc-spring-boot-starter
Créez une application avec Spring Boot 2