Apache camel ApacheCamel:我们如何解析Servlet输入的URL路径,然后将其用作SQL输出中的参数

Apache camel ApacheCamel:我们如何解析Servlet输入的URL路径,然后将其用作SQL输出中的参数,apache-camel,Apache Camel,我希望创建一个通用的restful服务来使用Camel执行crud操作,但不使用Restlet,只使用普通的Servlet和SQL组件 我对Camel只熟悉了2天,我无法获取URL部分以便在SQL查询中使用它们 其思想是只使用XML配置。我尝试了许多不同的方法,开始使用javascript。以下是我目前的代码(见下文) 我不知道如何检查url路径,解析它的各个部分,将其放入“消息体”,这应该是SQL查询参数的来源 在这个特定的场景中,它说,“ReferenceError:“response”未定

我希望创建一个通用的restful服务来使用Camel执行crud操作,但不使用Restlet,只使用普通的Servlet和SQL组件

我对Camel只熟悉了2天,我无法获取URL部分以便在SQL查询中使用它们

其思想是只使用XML配置。我尝试了许多不同的方法,开始使用javascript。以下是我目前的代码(见下文)

我不知道如何检查url路径,解析它的各个部分,将其放入“消息体”,这应该是SQL查询参数的来源

在这个特定的场景中,它说,“ReferenceError:“response”未定义


$CamelHttpMethod='POST'
更新!!!路径-${header.CamelHttpPath},url-${header.CamelHttpUrl},uri=${header.CamelHttpUri},基本uri=${header.CamelHttpBaeUri}。请求是${header.CamelHttpServletRequest}
$CamelHttpMethod='PUT'
插入
$CamelHttpMethod='DELETE'
删除。。。
不支持的方法${header.CamelHttpMethod}(${header.CamelHttpPath})

为什么
CamelHttpPath
匹配(/\/(\w+)\/(\w*)/)
匹配并写入正文(结果是类型
sun.org.mozilla.javascript.internal.NativeArray
)?为什么要测试
response.body!=null
这可能导致错误消息?你能举一个例子来说明CamelHttpPath和你期望的结果吗?例如,“/person/2”我想解析出“person”和“2”为什么不使用REST?您是否已经发现了Restlet组件:?我在一个webapp中运行了它,这里他们建议将Spring扩展包含到Restlet中,而它似乎依赖于错误的Spring版本。我使用4.0.4。
    <route>
        <from uri="servlet:///crud?matchOnUriPrefix=true"/>
        <setBody>
            <javaScript><![CDATA[
                  request.headers.get("CamelHttpPath").match(/\/(\w+)\/(\w*)/)
            ]]></javaScript>
        </setBody>
        <choice>
            <when>
                <javaScript><![CDATA[
                    request.headers.get("CamelHttpMethod") == "GET" && 
                    response.body != null
                ]]></javaScript>
                <to uri="sql:select * from person where id=2?dataSource=dataSource"></to>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'POST'</xpath>
                <transform>
                    <simple>Update!!! path - ${header.CamelHttpPath}, url - ${header.CamelHttpUrl}, uri = ${header.CamelHttpUri}, base uri = ${header.CamelHttpBaeUri}. And request is ${header.CamelHttpServletRequest}</simple>
                </transform>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'PUT'</xpath>
                <transform>
                    <simple>Insert</simple>
                </transform>
            </when>
            <when>
                <xpath>$CamelHttpMethod = 'DELETE'</xpath>
                <transform>
                    <simple>Delete...</simple>
                </transform>
            </when>
            <otherwise>
                <transform>
                    <simple>Unsupported method ${header.CamelHttpMethod} (${header.CamelHttpPath})</simple>
                </transform>
            </otherwise>
        </choice>
    </route>