[JAVA] Implémentez un serveur API Web REST simple avec Spring Boot + MySQL

Outline Implémentez un serveur d'API REST à l'aide de Spring Boot à partir de zéro. YutaKase6/spring-api-sample

Goal Entry Point Créez une API avec les points d'entrée suivants.

table

Nom physique Nom logique
id Identifiant d'utilisateur
value Informations de l'utilisateur

Steps...

Tout d'abord, créez un projet

Créer un projet Spring Boot à l'aide d'IntelliJ (Spring Initializr) --Qiita ij.jpeg

Vérifier Gradle

Un peu de recherche sur Gradle et lisez le build.gradle généré par Spring Initializr --Qiita

Pensez à l'architecture et à la conception de classe avant la mise en œuvre

Considérez l'architecture de l'API Web implémentée par Spring Boot --Qiita

Je vais implémenter

Implémentation de l'API REST avec Spring Boot et JPA (Domain Layer) --Qiita Implémentation de l'API REST avec Spring Boot et JPA (couche d'infrastructure) --Qiita Implémentation de l'API REST avec Spring Boot et JPA (couche d'application) --Qiita

Paramètres MySQL

Préparation MySQL

Install & Start

% brew install mysql
% mysql.server start                                                                  

** Créer un tableau **

CREATE TABLE test_users (
  id VARCHAR(18) PRIMARY KEY
  , value TEXT DEFAULT NULL
  , created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  , updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
mysql> desc test_users;
+------------+-------------+------+-----+-------------------+-----------------------------+
| Field      | Type        | Null | Key | Default           | Extra                       |
+------------+-------------+------+-----+-------------------+-----------------------------+
| id         | varchar(18) | NO   | PRI | NULL              |                             |
| value      | text        | YES  |     | NULL              |                             |
| created_at | timestamp   | NO   |     | CURRENT_TIMESTAMP |                             |
| updated_at | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+-------------+------+-----+-------------------+-----------------------------+
4 rows in set (0.00 sec)

Paramètres de Spring Boot

Écrivez les paramètres dans src / main / resources / application.properties. Vous pouvez écrire en yml, alors écrivez en yml. Tout d'abord, renommez.

Écrivez les paramètres de connexion avec MySQL.

application.yml


spring:
  datasource:
    url: jdbc:mysql://localhost:3306/<SchemaName>
    username: root
    password:

  jpa:
    hibernate:
      ddl-auto: none

Contrôle de fonctionnement

Courir

** Exécuter depuis IntelliJ (partie 1) ** Il peut être exécuté en appuyant sur le bouton de lecture à gauche de la méthode principale.

** Exécuter depuis IntelliJ (partie 2) ** Vous pouvez sélectionner la classe principale dans le menu déroulant en haut à droite et l'exécuter avec le bouton de lecture à droite.

** Exécuter de Gradle **

% ./gradlew bootRun

** Exécuter à partir de java **

% ./gradlew build
% java -jar build/libs/spring-api-0.0.1-SNAPSHOT.jar

Confirmation normale

--Enregistrement

% curl -X POST "http://localhost:8080/v1/users" -H "Content-Type: application/json" -d "{ \"id\": \"id\", \"value\": \"value\"}" -s -w '\nstatus code: %{http_code}\n'

{"id":"id","value":"value"}
status code: 201

--Référence

% curl "http://localhost:8080/v1/users/id" -s -w '\nstatus code: %{http_code}\n'

{"id":"id","value":"value"}
status code: 200
% curl -X DELETE "http://localhost:8080/v1/users/id" -s -w '\nstatus code: %{http_code}\n'


status code: 204

Confirmation d'anomalie (Spring Boot par défaut)

% curl "http://localhost:8080/v1/users/hoge" -s -w '\nstatus code: %{http_code}\n'

{"timestamp":"2018-07-20T12:11:51.131+0000","status":500,"error":"Internal Server Error","message":"No message available","path":"/v1/users/hoge"}
status code: 500
% curl "http://localhost:8080/v1/users" -s -w '\nstatus code: %{http_code}\n'

{"timestamp":"2018-07-20T12:14:08.013+0000","status":405,"error":"Method Not Allowed","message":"Request method 'GET' not supported","path":"/v1/users"}
status code: 405
% curl "http://localhost:8080/v1/user" -s -w '\nstatus code: %{http_code}\n'

{"timestamp":"2018-07-20T12:14:14.668+0000","status":404,"error":"Not Found","message":"No message available","path":"/v1/user"}
status code: 404

Il y en a beaucoup d'autres.

Personnalisez la réponse lorsqu'une erreur se produit

Personnalisez la réponse d'erreur de l'API REST créée par Spring Boot --Qiita

Présentez Swagger

Présentation de Swagger à l'API REST-Qiita de Spring Boot

Créer un test unitaire

Faire un test unitaire avec Spring Boot + JUnit --Qiita

Faites un test unitaire avec Spring Boot + JUnit + Mockito --Qiita

Créer un test fonctionnel

Faites un test fonctionnel autonome avec Spring Boot + JUnit + h2 --Qiita

Présentez un enregistreur

Log Spring Boot application using Spring AOP --Qiita

Mesurer la couverture

TBA...

Recommended Posts

Implémentez un serveur API Web REST simple avec Spring Boot + MySQL
Implémentez une API Rest simple avec Spring Security avec Spring Boot 2.0
Implémentez une API Rest simple avec Spring Security & JWT avec Spring Boot 2.0
Créer un serveur API Web avec Spring Boot
Implémenter l'API REST 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)
Faisons une API simple avec EC2 + RDS + Spring boot ①
Implémenter l'API REST avec Spring Boot et JPA (Domain Layer Edition)
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
J'ai créé un formulaire de recherche simple avec Spring Boot + GitHub Search API.
Créez une application de recherche simple avec Spring Boot
Implémenter GraphQL avec Spring Boot
Hello World (API REST) avec Apache Camel + Spring Boot 2
[Spring Boot] Obtenez des informations utilisateur avec l'API Rest (débutant)
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 2)
Un mémorandum lors de la création d'un service REST avec Spring Boot
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Personnalisez la réponse aux erreurs de l'API REST avec Spring Boot (Partie 1)
Spring avec Kotorin - 4 Conception d'API REST
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Créons une application Web de gestion de livres avec Spring Boot part1
Créons une application Web de gestion de livres avec Spring Boot part3
Créons une application Web de gestion de livres avec Spring Boot part2
[Débutant] Essayez d'écrire l'API REST pour l'application Todo avec Spring Boot
Créez une application Web simple avec Dropwizard
Créez un lot à la demande simple avec Spring Batch
Démarrez le développement d'applications Web avec Spring Boot
Implémentez un CRUD simple avec Go + MySQL + Docker
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Développement d'applications Web Spring Boot2 avec connexion Visual Studio Code SQL Server
Un débutant Java a essayé de créer une application Web simple à l'aide de Spring Boot
[Spring Boot] Précautions lors du développement d'une application Web avec Spring Boot et du placement d'une guerre sur un serveur Tomcat indépendant
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Créez un tableau d'affichage simple avec Java + MySQL
Essayez d'implémenter la fonction de connexion avec Spring Boot
Construisez un système WEB avec Spring + Doma + H2DB
Créer un environnement de développement Spring Boot avec docker
Créez un serveur Spring Cloud Config en toute sécurité avec Spring Boot 2.0
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Créer un conteneur Docker pour un serveur Web simple Python
Construisez un système WEB avec Spring + Doma + H2DB + Thymeleaf
Mappez automatiquement DTO aux entités avec l'API Spring Boot
[Compatible JUnit 5] Ecrire un test en utilisant JUnit 5 avec Spring boot 2.2, 2.3
[JUnit 5] Ecrivez un test de validation avec Spring Boot! [Test de paramétrage]
Présentez swagger-ui à l'API REST implémentée dans Spring Boot
J'ai écrit un test avec Spring Boot + JUnit 5 maintenant
Télécharger avec Spring Boot
Construisez un système WEB avec Spring + Doma + H2DB Partie 2
Découvrons comment recevoir avec Request Body avec l'API REST de Spring Boot
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
La première application WEB avec Spring Boot-Making a Pomodoro timer-
Une histoire remplie des bases de Spring Boot (résolu)
Créez une application Web Hello World avec Spring Framework + Jetty
Essayez d'utiliser l'API de recherche de code postal avec Spring Boot
Présentation de Spring Boot2, un framework Java pour le développement Web (pour les débutants)
J'ai créé un système d'exemple MVC simple à l'aide de Spring Boot
[Java] Exemple de projet de développement d'applications Web avec Spring Boot