Outline Implementieren Sie einen REST-API-Server mit Spring Boot von Grund auf neu. YutaKase6/spring-api-sample
Goal Entry Point Erstellen Sie eine API mit den folgenden Einstiegspunkten.
table
Physischer Name | Logischer Name |
---|---|
id | Benutzeridentifikation |
value | Nutzerinformation |
Steps...
Erstellen Sie ein Spring Boot-Projekt mit IntelliJ (Spring Initializr) - Qiita
Betrachten Sie die von Spring Boot --Qiita implementierte Architektur der Web-API
Implementierung der REST-API mit Spring Boot und JPA (Domain Layer) - Qiita Implementieren der REST-API mit Spring Boot und JPA (Infrastructure Layer) - Qiita Implementieren der REST-API mit Spring Boot und JPA (Application Layer) - Qiita
Install & Start
% brew install mysql
% mysql.server start
** Tabelle erstellen **
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)
Schreiben Sie die Einstellungen in src / main / resources / application.properties
.
Sie können in yml schreiben, also schreiben Sie in yml.
Zunächst umbenennen.
Schreiben Sie die Verbindungseinstellungen mit MySQL.
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/<SchemaName>
username: root
password:
jpa:
hibernate:
ddl-auto: none
** Von IntelliJ ausführen (Teil 1) ** Sie kann durch Drücken der Wiedergabetaste links neben der Hauptmethode ausgeführt werden.
** Von IntelliJ ausführen (Teil 2) ** Sie können die Hauptklasse aus dem Pulldown-Menü oben rechts auswählen und mit der Wiedergabetaste rechts ausführen.
** Lauf von Gradle **
% ./gradlew bootRun
** Run from Java **
% ./gradlew build
% java -jar build/libs/spring-api-0.0.1-SNAPSHOT.jar
--Anmeldung
% 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
--Referenz
% 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
--Undefinierte Methode
% 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
Es gibt viele andere.
Passen Sie die Fehlerantwort der von Spring Boot --Qiita erstellten REST-API an
Einführung von Swagger in die REST-API-Qiita von Spring Boot
Durchführen eines Komponententests mit Spring Boot + JUnit --Qiita
Führen Sie einen Komponententest mit Spring Boot + JUnit + Mockito - Qiita durch
Führen Sie einen eigenständigen Funktionstest mit Spring Boot + JUnit + h2 - Qiita durch
Spring Boot-Anwendung mit Spring AOP - Qiita protokollieren
TBA...
Recommended Posts