4.4. REST DSL 구성
4.4.1. Java로 구성
Java에서는 restConfiguration()
빌더 API를 사용하여 REST DSL을 구성할 수 있습니다. 예를 들어 Servlet 구성 요소를 기본 구현으로 사용하도록 REST DSL을 구성하려면 다음을 수행합니다.
restConfiguration().component("servlet").bindingMode("json").port("8181") .contextPath("/camel-example-servlet-rest-blueprint/rest");
4.4.2. XML로 구성
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.4.3. 구성 옵션
표 4.3. “REST DSL 구성 옵션” restConfiguration()
빌더(Java DSL) 또는 restConfiguration
요소(XML DSL)를 사용하여 REST DSL을 구성하는 옵션을 표시합니다.
Java DSL | XML DSL | 설명 |
---|---|---|
|
|
REST 전송으로 사용할 Camel 구성 요소(예: |
|
|
REST 서비스를 노출하는 데 사용할 프로토콜입니다. 기본 REST 구현에 따라 다르지만 일반적으로 |
|
| REST 서비스를 노출하는 데 사용할 호스트 이름입니다. |
|
| REST 서비스를 노출하는 데 사용할 포트 번호입니다. 참고: 이 설정은 컨테이너의 표준 HTTP 포트를 대신 사용하는 서블릿 구성 요소에서 무시됩니다. Apache Karaf OSGi 컨테이너의 경우 표준 HTTP 포트는 일반적으로 8181입니다. Cryostat 및 툴링을 위해 포트 값을 설정하는 것이 좋습니다. |
|
|
REST 서비스의 선행 컨텍스트 경로를 설정합니다. 배포된 웹 애플리케이션이 |
|
|
호스트 이름이 명시적으로 설정되지 않은 경우 이 확인자는 REST 서비스의 호스트를 결정합니다. 가능한 값은
기본값은 Camel 2.16까지 |
|
|
JSON 또는 XML 형식 메시지에 대한 바인딩 모드를 활성화합니다. 가능한 값은 |
|
|
사용자 정의 HTTP 오류 코드 헤더가 있는 경우 출력에서 바인딩을 건너뛸지 여부를 지정합니다. 이렇게 하면 성공적인 메시지가 수행되므로 JSON 또는 XML에 바인딩되지 않는 사용자 지정 오류 메시지를 빌드할 수 있습니다. 기본값은 |
|
|
|
|
|
Camel이 JSON 데이터 형식을 구현하는 데 사용하는 구성 요소를 지정합니다. 가능한 값은 |
|
|
Camel이 XML 데이터 형식을 구현하는 데 사용하는 구성 요소를 지정합니다. 가능한 값은 |
|
| 기본 REST 구현에서 임의의 구성 요소 수준 속성을 설정할 수 있습니다. |
|
| 기본 REST 구현에서 임의의 엔드포인트 수준 속성을 설정할 수 있습니다. |
|
| 기본 REST 구현에서 임의의 소비자 엔드포인트 속성을 설정할 수 있습니다. |
|
| 기본 데이터 형식 구성 요소(예: jackson 또는 CryostatB)에서 임의의 속성을 설정할 수 있습니다. Camel 2.14.1 이후부터는 다음 접두사를 속성 키에 연결할 수 있습니다.
속성 설정을 특정 형식 유형(JSON 또는 XML) 및 특정 메시지 방향(IN 또는 OUT)으로 제한하려면 다음을 수행합니다. |
|
| 사용자 지정 CORS 헤더를 키/값 쌍으로 지정할 수 있습니다. |
4.4.4. 기본 CORS 헤더
CORS(cross-origin resource sharing)가 활성화된 경우 다음 헤더가 기본적으로 설정됩니다. 선택적으로 corsHeaderProperty
DSL 명령을 호출하여 기본 설정을 덮어쓸 수 있습니다.
헤더 키 | 헤더 값 |
---|---|
|
|
|
|
|
|
|
|
4.4.5. 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에 해당합니다.