#spring-boot #apache-camel #swagger #dsl
#spring-boot #apache-camel #развязность #dsl
Вопрос:
Я создал Camel Rest-DSL в проекте spring-boot.Теперь, во время реализации swagger, когда я передаю параметр множественного запроса с обязательными и необязательными полями, он не фиксирует значение null в необязательных полях.
Мой пример кода выглядит примерно так :
================ маршрутизатор открытого класса расширяет 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}amp;MainID2={MainID2}amp;MainID3={MainID3}amp;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=12345amp;MainID2=amp;MainID3=amp;MainID4=
Но когда он запускается через пользовательский интерфейс swagger, в CURL он показывает :
Проблема сохраняется только тогда, когда вступило в действие необязательное поле.
Присутствует ли какой-либо параметр, который позволит вставлять нулевые значения в соответствии с требуемым форматом [Link1], а не как ссылка на ошибку [Link2]?
Комментарии:
1. Вы не можете сделать это для параметров запроса в rest-dsl со
{xxx}
стилем, который предназначен только для content-path. Так что просто удалите все это после?
метки, и это должно сработать.2. Спасибо, Клаус Ибсен, я только пытался удалить «{}» из некоторых параметров запроса, и они не работали. Теперь, согласно вашей рекомендации, я удалил все, что «{}» после «?», и это работает 🙂 Текущая ссылка выглядит так: localhost:8080 / swagger/… где 12345 — это «MainID», который является обязательным полем.