Dropwizardチュートリアル–こんにちは世界に例

DropwizardはオープンソースのJavaの枠組みの急速な発展にREST Apiを用意しています。 Dropwizardは、すべての依存関係(Jersey、jackson、jettyなど)を単一のパッケージにバンドルしたり、別々のモジュールとして追加したりすることができるエコシステムの一種です。 Dropwizardを使用していない場合は、すべての依存関係を自分で収集することになり、さまざまなjavaライブラリ間のバージョンの不一致によるクラスのロードの問 Dropwizardはあなたのためにこの問題を解決し、あなたが物事を成し遂げることに集中することができますシンプルで軽量なパッケージに安定した、成熟した DROPWIZARDを使用してREST Apiを構築する方法を学びましょう。Dropwizardバージョン1.0.0を使用して開発されたこのコードに記載されている例を実行するには、Java8が必要です。

Dropwizard内に含まれるライブラリ

Dropwizardをプロジェクトに含めると、次のライブラリがクラスパスに追加されます。

  • Jersey–RESTfulなwebアプリケーションを構築するためのものです。
  • Jetty–DropwizardはJetty HTTPライブラリを使用して、HTTPサーバーをプロジェクトに直接埋め込みます。
  • Jackson–オブジェクトからJSONへの変換のため。 これにより、JAXB注釈を使用してドメインモデルを直接エクスポートできます。
  • Guava–開発を高速化するために高度に最適化された不変データ構造。
  • LogbackおよびSlf4J–高性能で柔軟なロギング用。
  • Hibernate Validator–ユーザー入力を検証し、有用でi18nに優しいエラーメッセージを生成するための簡単な宣言型フレームワーク。
  • Apache HTTPClient–他のwebサービスとの低レベルと高レベルの両方の相互作用のためのものです。
  • JDBI–Javaでリレーショナルデータベースを使用する最も簡単な方法。
  • Liquidbase–開発とリリースのサイクルを通してデータベーススキーマをチェックします。
  • FreeMarker–テンプレートシステム。
  • Mustache–より多くのユーザー向けアプリケーションのための単純なテンプレートシステム。
  • Joda Time–日付と時刻を処理するための非常に完全で正気なライブラリ。

mavenでdropwizardを設定

私たちのプロジェクトはmaven-archetype-quickstart archetypeに基づいています。 コマンドプロンプトを使用してプロジェクトを作成するか、eclipseを使用して単純なmaven javaプロジェクトを作成できます。

mvn archetype:generate -DgroupId=com.howtodoinjava.demo -DartifactId=DropWizardExample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

生成されたプロジェクトにはpom.xmlファイルも含まれます。 そこにdropwizard依存関係を追加します。

これにより、すべてのjarファイルがダウンロードされ、クラスパスに追加されます。 プロジェクトにビルドとパッケージのサポートを追加するには、maven-shadeプラグインを使用します。

xmlファイルは次のようになります。

RESTアプリケーションクラスの作成

アプリケーションクラスは、任意のdropwizardアプリケーションのエントリポイントです。 これは、io.dropwizard.Applicationクラスを拡張し、initialize(Bootstrap<Configuration>)run(Configuration, Environment)メソッドを実装する必要があります。 アプリケーションのランタイム環境を準備します。

runメソッドを呼び出すには、アプリケーションをjarファイルとして実行するときにjava -jarコマンドによって呼び出されるpublic static void main(String args) {}メソッドが必要です。JARファイルを実行するために、組み込みHTTPサーバー(Jetty)を起動してサービスを実行するコマンドにserver引数を追加します。

java -jar target\DropWizardExample.jar server

dropwizardの組み込みJettyサーバーは、デフォルトでポート8080と8081にバインドしようとします。 ポート8080は、着信HTTP要求をアプリケーションに提供するためにサーバーによって使用され、8081はDropwizardの管理インターフェイスによって使用されます。

また、ロギングのニーズに使用できるLoggerインスタンスを構築するために必要なLoggerLoggerFactoryクラスもインポートしました。

RESTリソースとApiの作成

Application bootstrapクラスを追加すると、REST Apiを含むRESTリソースを追加できるようになりました。 この例では、従業員管理アプリケーションを作成しました–従業員レコードの作成/更新/削除用のApiを持っています。 このクラスは、HTTP要求の処理とJSON応答の生成を担当します。

クラスパスにJerseyがあるので、それを使用してREST Apiを構築します。DBを模倣するために、従業員のレコードと更新をメモリに格納するEmployeeDBクラスを作成しました。

ビルドリソース表現

表現は、データを保持し、JSONにシリアル化されたものです。 これはRESTfulアプリケーションのモデルです。 JacksonでJerseyを使用する場合、リソース表現を構築するために必要なのは、java bean標準に従う単純なPOJOだけです。 Jacksonは、各クラスのgetterメソッドとその戻り値の型に従ってJSON文字列を再帰的に構築します。

java.util.List型のインスタンスはすべてJSON配列に変換されます。

必要に応じて、GETTERに@JsonIgnoreアノテーションを追加することで、プロパティがJSON表現の一部にならないようにすることができます。

リクエストの検証

PUTおよびPOSTリクエストを受け入れるときは、リクエスト本文でユーザーが送信したエンティティの内容を検証する必要があります。 Dropwizardはこの目的のためにhibernate validatorを使用します。 検証を追加するには、次の手順が必要です。

REST Apiの検証

REST Apiの検証を作成して追加したら、これをテストしましょう。

ビルドアプリケーションuber jarファイル

> mvn clean package

jettyサーバーでアプリケーションを開始

> java -jar target\DropWizardExample-0.0.1-SNAPSHOT.jar server

アクセスURIhttp://localhost:8080/employees

これにより、employeesコレクションと関連する応答ヘッ

Dropwizard-GETリクエストの例– 1

アクセスURIhttp://localhost:8080/employees/1

これにより、id1の従業員のレコードが返されます。

Dropwizard-GETリクエストの例– 2

送信されたHTTP PUThttp://localhost:8080/employees/1無効な要求データ

検証メッセージが表示されます。

Dropwizard-検証例

送信されたHTTP PUThttp://localhost:8080/employees/1正しいデータ

従業員レコードが正常に更新されます。

Dropwizard-putリクエストの例

同様に、他のApiやシナリオをテストできます。

You might also like

コメントを残す

メールアドレスが公開されることはありません。