Apache Camel consumes()接受无效的JSON

sy5wg1nm  于 2023-05-17  发布在  Apache
关注(0)|答案(1)|浏览(127)

我有一个RESTful端点来创建用户:

POST /users/new

{
    "id": 1,
    "name": "John Doe"
}

Camel通过consumes()神奇地处理请求(在Jackson的帮助下)。)将JSON对象的键转换为消息头,我访问该消息头以存储用户。

this.restConfiguration()
    .component("netty4-http")
    .bindingMode(RestBindingMode.json)
    .contextPath("/").port(AbstractRestRoute.PORT)
    .enableCORS(true)
    .corsAllowCredentials(true)
    .corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization");

this.rest.("/users")
    .post("/new")
        .consumes("application/json")
        .produces("application/json")
        .to("direct:rest:newuser");

这和预期的一样。但是,一个客户端设法将两个users对象传递给端点,如下所示:

POST /users/new

{
    "id": 1,
    "name": "John Doe"
}
{
    "id": 2,
    "name": "Jane Doe"
}

我希望Camel在这里抛出一个JSON解析错误。
但是:事实证明,应用程序服务的请求(!)并忽略第二个对象。因此,请求产生的结果与上面的结果相同。
我可以将Camel设置为严格的JSON解析模式来抛出错误吗?

pbossiut

pbossiut1#

您可以自定义Camel内部用于绑定的JacksonMap器的配置。
尝试使用“json.in.*”属性来启用/禁用某些Jackson设置。也许有一个更严格的?

restConfiguration().component("...") 
            .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");

相关问题