😺
QuarkusでAPI開発(RESTサービス(JSON))のサンプルプロジェクトを作成してみた
QuarkusでAPI開発(RESTサービス(JSON))のサンプルプロジェクトを作成してみました。
API開発の前にQuarkusの簡単な説明をします。
Quarkusのポイント
- コンテナファースト
- 低メモリ使用量と高速起動時間に最適化されている - ビルド時間処理
- ビルド時に、従来のフレームワークが実行時に行うことを実行すること
- すべてのメタデータ処理がすでに実行されているため、メモリ使用量が少なくなり、起動時間が短縮される - リフレクション使用量の削減
- 可能な限りリフレクションを回避し、起動時間とメモリ使用量を削減 - GraalVMネイティブイメージのファーストクラスのサポート
- アプリケーションをネイティブ実行可能ファイルにコンパイルすると、起動がはるかに速くなり、標準のJVMよりもはるかに小さいヒープで実行できる - ネイティブイメージのプリブート
- Kubernetesだけでなく、ベアメタル
QuarkusのRESTサービス(JSON)を実行する(チート)
# サンプルプロジェクトをcloneするディレクトリに移動して実行
$ mkdir -p ~/app/quarkus/
$ cd ~/app/quarkus/
$ git clone https://github.com/taktaky/quarkus-samples.git
$ cd quarkus-samples/rest-json-sample
$ ./mvnw compile quarkus:dev
# 別のターミナルで実行するかブラウザで下記のURLにアクセス
$ curl -s http://localhost:8080/pets
QuarkusのRESTサービス(JSON)を実行する(詳細)
Quarkusのサンプルプロジェクトをダウンロード
# サンプルプロジェクトをcloneするディレクトリに移動して実行
$ mkdir -p ~/app/quarkus/
$ cd ~/app/quarkus/
$ git clone https://github.com/taktaky/quarkus-samples.git
RESTサービス(JSON)プロジェクトのディレクトリに移動
$ cd quarkus-samples/rest-json-sample
RESTサービス(JSON)の起動
$ ./mvnw compile quarkus:dev
[INFO] Scanning for projects...
・・・省略・・・
[INFO]
[INFO] --------------------< com.deraii:rest-json-sample >---------------------
[INFO] Building rest-json-sample 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- quarkus-maven-plugin:2.4.0.Final:generate-code (default) @ rest-json-sample ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rest-json-sample ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ rest-json-sample ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:2.4.0.Final:dev (default-cli) @ rest-json-sample ---
[INFO] Invoking org.apache.maven.plugins:maven-resources-plugin:2.6:testResources) @ rest-json-sample
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/tack/app/quarkus/quarkus-samples/rest-json-sample/src/test/resources
[INFO] Invoking org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile) @ rest-json-sample
[INFO] Nothing to compile - all classes are up to date
Listening for transport dt_socket at address: 5005
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2021-11-03 02:01:00,320 INFO [io.quarkus] (Quarkus Main Thread) rest-json-sample 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.4.0.Final) started in 2.310s. Listening on: http://localhost:8080
2021-11-03 02:01:00,328 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
2021-11-03 02:01:00,329 INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, resteasy, resteasy-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [r] to resume testing, [o] Toggle test output, [h] for more options>
RESTサービス(JSON)にアクセス
$ curl -s http://localhost:8080/pets
[{"name":"ムギ","description":"犬:トイプードル"},{"name":"サクラ","description":"犬:チワワ"},{"name":"ハッピー","description":"犬:ミックス犬"}]%
以上です🎉
参考資料
Discussion