Я создаю маршрут, используя верблюда Apache со следующей конфигурацией:
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import org.apache.camel.Consume;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class RestToKafkaRoute extends RouteBuilder {
private final Config
config=ConfigFactory.load("application.conf").resolve();
@Override
public void configure() throws Exception {
final String host = config.getString("infrastructure.rest.host");
final Integer port = config.getInt("infrastructure.rest.port");
final String context = config.getString("infrastructure.rest.context");
final String path = config.getString("infrastructure.rest.path");
final String endpoint = config.getString("infrastructure.kafka.endpoint");
System.out.printf("Consuming from %s. Sending to %s\n", host + ":" + port + "/" + context + "/" + path, endpoint);
restConfiguration()
.component("jetty")
.host(host)
.port(port);
rest("/" + context)
.post("/" + path)
.consumes("application/json").route().routeId(path)
.to(endpoint);
}
}
После настройки я выполняю тест:
@Test
public void callRestServiceWithHandledMethodTest() {
given()
.body("this_is_not_a_json")
.when()
.post("/{path}", path)
.then()
.log().status()
.statusCode(200);
}
Этот тест проходит, хотя по моему мнениюон должен потерпеть неудачу, так как тело не json, а простой текст.
Мои вопросы:
Что на самом деле делает метод .consumes()
?
Почему он допускает типы данных, отличные от application / json?
Не должен ли тест завершиться неудачей?
Как можно заставить службу остальных отклонять типы данных, отличные от json?