首页 > 解决方案 > Apache Camel Karaf 强制标头被忽略

问题描述

我有一条带有休息看跌期权的路线。而且我需要在此调用中声明一个强制标头。但我没有从 blueprint.xml 得到它。即使没有声明的标头,答案也是 200。这是我的路由 xml:

<restConfiguration bindingMode="json"
   clientRequestValidation="true" component="jetty"
   enableCORS="true" host="{{rest.endpoint.host}}" port="{{rest.endpoint.port}}">
   <dataFormatProperty key="prettyPrint" value="true"/>

enter code here

我忘记了什么或写错了什么?谢谢收听。

标签: apache-camelapache-karafblueprint-osgi

解决方案


您错过了您的问题的路线,您所拥有的是休息配置。

您可以使用filter检查是否缺少标头,然后设置正确的响应正文和标头,并stop在请求中缺少标头时用于提早退出。

以下是 Java-DSL 中的方法

from("direct:needsHeader")
    .filter(header("requiredHeader").isNull())
        .setHeader("CamelHttpResponseCode", constant(400))
        .setHeader("Content-Type", constant("text/plain"))
        .setBody().constant("Missing requiredHeader!")
        .log("${body}")
        .stop()
    .end()
    .setHeader("CamelHttpResponseCode", constant(200))
    .setHeader("Content-Type", constant("text/plain"))
    .setBody().simple("requiredHeader value: ${headers.requiredHeader}")
    .log("${body}");

我自己并没有太多使用蓝图,但上面的蓝图可能也很容易实现。


推荐阅读