DropwizardはオープンソースのJavaの枠組みの急速な発展にREST Apiを用意しています。 Dropwizardは、すべての依存関係(Jersey、jackson、jettyなど)を単一のパッケージにバンドルしたり、別々のモジュールとして追加したりすることができるエコシステムの一種です。 Dropwizardを使用していない場合は、すべての依存関係を自分で収集することになり、さまざまなjavaライブラリ間のバージョンの不一致によるクラスのロードの問 Dropwizardはあなたのためにこの問題を解決し、あなたが物事を成し遂げることに集中することができますシンプルで軽量なパッケージに安定した、成熟した DROPWIZARDを使用してREST Apiを構築する方法を学びましょう。Dropwizardバージョン1.0.0を使用して開発されたこのコードに記載されている例を実行するには、Java8が必要です。
- Dropwizard内に含まれるライブラリ
- mavenでdropwizardを設定
- RESTアプリケーションクラスの作成
- RESTリソースとApiの作成
- ビルドリソース表現
- リクエストの検証
- REST Apiの検証
- ビルドアプリケーションuber jarファイル
- jettyサーバーでアプリケーションを開始
- アクセスURIhttp://localhost:8080/employees
- アクセスURIhttp://localhost:8080/employees/1
- 送信されたHTTP PUThttp://localhost:8080/employees/1無効な要求データ
- 送信されたHTTP PUThttp://localhost:8080/employees/1正しいデータ
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インスタンスを構築するために必要なLogger
とLoggerFactory
クラスもインポートしました。
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コレクションと関連する応答ヘッ
アクセスURIhttp://localhost:8080/employees/1
これにより、id1の従業員のレコードが返されます。
送信されたHTTP PUThttp://localhost:8080/employees/1無効な要求データ
検証メッセージが表示されます。
送信されたHTTP PUThttp://localhost:8080/employees/1正しいデータ
従業員レコードが正常に更新されます。
同様に、他のApiやシナリオをテストできます。