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");
XML DSL を使用した設定
XML では、restConfiguration
要素を使用して REST DSL を設定できます。たとえば、以下は Servlet コンポーネントをベースの実装として使用するように REST DSL を設定する場合になります。
<?xml version="1.0" encoding="UTF-8"?> <blueprint ...> ... <camelContext xmlns="http://camel.apache.org/schema/blueprint"> ... <restConfiguration component="servlet" bindingMode="json" contextPath="/camel-example-servlet-rest-blueprint/rest" port="8181"> <dataFormatProperty key="prettyPrint" value="true"/> </restConfiguration> ... </camelContext> </blueprint>
設定オプション
表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");
コンマ区切りにすると、複数 の機能を無効にできます。以下に例を示します。
.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");
以下の例は、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>
有効化または無効化できる Jackson 機能は、以下の Jackson クラスの enum
ID に対応しています。