Как я могу добавить параметры вызова REST к заголовку в качестве параметра? - PullRequest
0 голосов
/ 24 декабря 2018

Я использую ESB для маршрутизации данных между вызовами SQL и REST.Пока это работает нормально, однако, когда я хочу добавить опции к вызову REST.Например:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <propertyPlaceholder id="placeholder"
             location="file:${karaf.home}/etc/nl.test.astron.sql.cfg" />


<restConfiguration bindingMode="json" component="servlet">
            <endpointProperty key="servletName" value="ASTRONServlet" />
        </restConfiguration>

        <rest path="/get/astrondata">
            <get uri="">            
                <to pattern="InOut" uri="direct:get" />         
            </get>
        </rest>

        <route id="get_to_uri">
            <from uri="direct:get"/>
            <setHeader headerName="boundRaMin">
                <simple>70</simple>
            </setHeader>
            <setHeader headerName="boundRaMax">
                <simple>90</simple>
            </setHeader>
            <setHeader headerName="boundDecMin">
                <simple>0</simple>
            </setHeader>
            <setHeader headerName="boundDecMax">
                <simple>30</simple>
            </setHeader>    
            <to uri="sql:{{sql.getDatabase}}?
                outputType=SelectList&amp;
                greedy=true&amp;
                useIterator=false"/>
        </route>

и код SQL:

sql.getDatabase=SElECT * FROM dbo.astron_data WHERE :#boundRaMin<ra AND 
                ra<:#boundRaMax AND :#boundDecMin<dec AND dec<:#boundDecMax

Как можно видеть здесь, boundRaMin, boundRaMax, boundDecMin, boundDecMax все устанавливаются в заголовках, однако яхочу сделать эти переменные в зависимости от опций, определенных в вызове rest.Например, следующий вызов:

http://localhost:8080/astron/get/astrondata?boundRaMin=value1&boundRaMax=value2&boundDecMin=value3&boundDecMax=value4

должен заполнить правильные значения value1 ... value4 в заголовках.Похоже, что эти параметры запроса не отображаются в заголовки.

1 Ответ

0 голосов
/ 24 декабря 2018

В соответствии с компонентом camel-sql, начиная с версии Camel 2.14, вы можете использовать простые выражения.Поэтому попробуйте изменить свойство-заполнитель sql.getDatabase следующим образом:

sql.getDatabase=SELECT * FROM dbo.astron_data WHERE :${header.boundRaMin} < ra AND 
                ra < ${header.boundRaMax} AND ${header.boundDecMin} < dec AND dec < ${header.boundDecMax}
...