4.4. REST DSL の設定
Java DSL を使用した設定 リンクのコピーリンクがクリップボードにコピーされました!
Java では、restConfiguration()
builder API を使用して REST DSL を設定することができます。たとえば、以下は Servlet コンポーネントをベースの実装として使用するように REST DSL を設定する場合になります。
restConfiguration().component("servlet").bindingMode("json").port("8181") .contextPath("/camel-example-servlet-rest-blueprint/rest");
restConfiguration().component("servlet").bindingMode("json").port("8181")
.contextPath("/camel-example-servlet-rest-blueprint/rest");
XML DSL を使用した設定 リンクのコピーリンクがクリップボードにコピーされました!
XML では、restConfiguration
要素を使用して REST DSL を設定できます。たとえば、以下は Servlet コンポーネントをベースの実装として使用するように REST DSL を設定する場合になります。
設定オプション リンクのコピーリンクがクリップボードにコピーされました!
表4.3「REST DSL の設定オプション」 は、restConfiguration()
ビルダー (Java DSL) または restConfiguration
要素 (XML DSL) を使用して、REST DSL を設定するオプションを示しています。
Java DSL | XML DSL | 説明 |
---|---|---|
|
|
REST トランスポートとして使用する Camel コンポーネントを指定します (例: |
|
|
REST サービスの公開に使用するプロトコル。ベースとなる REST の実装に依存しますが、通常は |
|
| REST サービスの公開に使用するホスト名。 |
|
| REST サービスの公開に使用するポート番号。 注意: この設定は Servlet コンポーネントによって無視され、代わりにコンテナーの標準 HTTP ポートが使用されます。Apache Karaf OSGi コンテナーの場合、標準の HTTP ポートは通常 8181 になります。JMX などのツールのためにポート値を明記するとよいでしょう。 |
|
|
REST サービスのリーディングコンテキストパスを指定します。これは Servlet などのコンポーネントで使用することができます。これらのコンポーネントは、 |
|
|
ホスト名が明示的に設定されていない場合、このリゾルバーによって REST サービスのホストが決定されます。使用できる値は、ホスト名の形式に解決される
Camel 2.16 までのデフォルトは |
|
|
JSON または XML 形式のメッセージのバインディングモードを有効にします。使用できる値は |
|
|
HTTP エラーがある場合、出力のバインディングをスキップするかどうかを指定します。これにより、JSON や XML にバインドせず、カスタムエラーメッセージを作成することができます。デフォルトは |
|
|
|
|
|
Camel が JSON デ ータフォーマットを変換するために使用するコンポーネントを指定します。使用できる値は、 |
|
|
Camel が XML データフォーマットを変換するために使用するコンポーネントを指定します。使用できる値は |
|
| ベースにある REST 実装に対し、コンポーネントレベル の任意のプロパティーを設定できるようにします。 |
|
| ベースにある REST 実装に対し、エンドポイントレベル の任意のプロパティーを設定できるようにします。 |
|
| ベースにある REST 実装に対し、コンシューマーエンドポイント の任意のプロパティーを設定できます。 |
|
| ベースにあるデータフォーマットコンポーネント (Jackson や JAXB など) に対し、任意のプロパティーを設定できます。Camel 2.14.1 以降では、以下の接頭辞をプロパティーキーに割り当てることができます。
これによって、プロパティー設定を特定の形式 (JSON または XML) および特定のメッセージ方向 (IN または OUT) だけに適用することができます。 |
|
| カスタム CORS ヘッダをキー/値のペアで指定できるようにします。 |
デフォルトの CORS ヘッダー リンクのコピーリンクがクリップボードにコピーされました!
CORS (オリジン間リソース共有) を有効にすると、デフォルトで以下のヘッダーが設定されます。corsHeaderProperty
DSL コマンド を呼び出すことで、デフォルト設定を任意で上書きできます。
ヘッダーのキー | ヘッダーの値 |
---|---|
|
|
|
|
|
|
|
|
Jackson JSON 機能の有効化または無効化 リンクのコピーリンクがクリップボードにコピーされました!
dataFormatProperty
オプションに以下のキーを設定すると、特定の Jackson JSON 機能を有効または無効にできます。
-
json.in.disableFeatures
-
json.in.enableFeatures
たとえば、Jackson の FAIL_ON_UNKNOWN_PROPERTIES
機能を無効にする場合は、以下のとおりです (JSON 入力に Java オブジェクトにマップできないプロパティーがある場合に Jackson は失敗します)。
restConfiguration().component("jetty") .host("localhost").port(getPort()) .bindingMode(RestBindingMode.json) .dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES");
restConfiguration().component("jetty")
.host("localhost").port(getPort())
.bindingMode(RestBindingMode.json)
.dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES");
コンマ区切りにすると、複数 の機能を無効にできます。以下に例を示します。
.dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE");
.dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE");
以下の例は、Java DSL で Jackson JSON 機能を有効および無効する方法を示しています。
restConfiguration().component("jetty") .host("localhost").port(getPort()) .bindingMode(RestBindingMode.json) .dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE") .dataFormatProperty("json.in.enableFeatures", "FAIL_ON_NUMBERS_FOR_ENUMS,USE_BIG_DECIMAL_FOR_FLOATS");
restConfiguration().component("jetty")
.host("localhost").port(getPort())
.bindingMode(RestBindingMode.json)
.dataFormatProperty("json.in.disableFeatures", "FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE")
.dataFormatProperty("json.in.enableFeatures", "FAIL_ON_NUMBERS_FOR_ENUMS,USE_BIG_DECIMAL_FOR_FLOATS");
以下の例は、XML DSL で Jackson JSON 機能を有効および無効する方法を示しています。
<restConfiguration component="jetty" host="localhost" port="9090" bindingMode="json"> <dataFormatProperty key="json.in.disableFeatures" value="FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE"/> <dataFormatProperty key="json.in.enableFeatures" value="FAIL_ON_NUMBERS_FOR_ENUMS,USE_BIG_DECIMAL_FOR_FLOATS"/> </restConfiguration>
<restConfiguration component="jetty" host="localhost" port="9090" bindingMode="json">
<dataFormatProperty key="json.in.disableFeatures" value="FAIL_ON_UNKNOWN_PROPERTIES,ADJUST_DATES_TO_CONTEXT_TIME_ZONE"/>
<dataFormatProperty key="json.in.enableFeatures" value="FAIL_ON_NUMBERS_FOR_ENUMS,USE_BIG_DECIMAL_FOR_FLOATS"/>
</restConfiguration>
有効化または無効化できる Jackson 機能は、以下の Jackson クラスの enum
ID に対応しています。