Передача нескольких параметров запроса Camel REST-DSL с нулевыми значениями, приводящими к ошибке - PullRequest
1 голос
/ 22 апреля 2019

Я создал Camel Rest-DSL в проекте весенней загрузки. Теперь, во время реализации swagger, когда я передаю параметр множественного запроса с обязательными и необязательными полями, он не захватывает нулевое значение за ненадобностью.поля.

Мой пример кода выглядит примерно так:

================ Публичный класс Router расширяет RouteBuilder {

@Override 


public void configure() throws Exception,PredicateValidationException {

    JsonDataFormat json = new JsonDataFormat(JsonLibrary.Jackson);
    Exchange exchnage;

    CamelContext context = new DefaultCamelContext();

    restConfiguration()
        .component("servlet")
        .apiContextPath("/api-docs")
        .contextPath("/swagger")
        .apiProperty("api.title", "Sample Services")
        .apiProperty("api.version", "v1");

        interceptFrom().to("log:received");

        rest().get("/getAppStatus?MainID={MainID}&MainID2={MainID2}&MainID3={MainID3}&MainID4={MainID4}").produces("application/json").param().name("Consumer").type(RestParamType.header).endParam()
            .param().name("UserRefId").type(RestParamType.header).endParam()
            .param().name("ConRefId").type(RestParamType.header).endParam()
            .param().name("MainID").type(RestParamType.query).endParam()
            .param().name("MainID2").type(RestParamType.query).required(false).endParam()
            .param().name("MainID3").type(RestParamType.query).required(false).endParam()
            .param().name("MainID4").type(RestParamType.query).required(false).endParam()
            .description("Get Application Status")
            .to("direct:getAppStatus");

        from("direct:getAppStatus").bean(idGen)
            .log("body before is : ${body}")
            .setHeader("operationName",constant("getAppStatus"))
            .process(new GetRequestProcessor())
            .setHeader("Content-Type", constant("{{route.ContentType}}"))
            .setHeader("SOAPAction", constant("{{route.getAppStatus}}"))
            .log("body after is : ${body}")
            .setHeader("opName",constant("getAppStatus"))
            .to("{{route.sampleURL}}")
            .process(new GetApplicationStatusResponseProcessor()).end();


}

}

==================== Здесь: UserRefId и ConRefId используются в качестве валидаторов запросов.

Параметр запроса MainIDтребуется, и MainID2, MainID3, MainID4 являются полями, которые могут содержать нулевые значения.

Пример ссылки:

Link1 = http://localhost:8080/swagger/getAppStatus?MainID=12345&MainID2=&MainID3=&MainID4=

Но когда он запускается через пользовательский интерфейс Swagger, в CURL он показывает:

Ссылка 2 = http://localhost:8080/swagger/getAppStatus?MainID2=%MainID2%7D&MainID3=%MainID3%7D&MainID4=%MainID4%7D&MainID=12345

Проблема сохраняется только при вступлении в действие необязательного поля.

Есть ли какой-либо параметр, который позволитнулевые значения для вставки в необходимом формате [Link1], скорее как ссылка на ошибку [Link2]?

...