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...
Créer un projet Spring Boot à l'aide d'IntelliJ (Spring Initializr) --Qiita
Un peu de recherche sur Gradle et lisez le build.gradle généré par Spring Initializr --Qiita
Considérez l'architecture de l'API Web implémentée par Spring Boot --Qiita
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
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)
É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
** 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
--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
% 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 d'erreur de l'API REST créée par Spring Boot --Qiita
Présentation de Swagger à l'API REST-Qiita de Spring Boot
Faire un test unitaire avec Spring Boot + JUnit --Qiita
Faites un test unitaire avec Spring Boot + JUnit + Mockito --Qiita
Faites un test fonctionnel autonome avec Spring Boot + JUnit + h2 --Qiita
Log Spring Boot application using Spring AOP --Qiita
TBA...
Recommended Posts